I posted about this in another thread earlier but I'm sure only a handful read it.
The Random Number Generator is working fine. The percentages listed for melding, gathering, and HQ chances are accurate to within 0.5%. The game is not shafting you, your memory is.
When you fail 4 times in a row while mining a node with a 95% success rate it sticks in your mind because you think to yourself, "bullsh!t!!! That's gotta be like a 1 in a million chance". The times you successfully gather 4 HQ items from a node with 85% chance and 15% HQ are far less memorable despite being significantly less likely. This is just the way human memory works. For survival it's far more important to remember what went horribly wrong than to remember what was slightly better than normal. I could easily write pages about how crappy our brains are when trying to remember things accurately but that's not my primary point here.
Want to know EXACTLY how unlikely your string of bad luck was?
Go here
http://www.wolframalpha.com/
and type in the percentage you had to succeed/fail raised to the power of how many times it happened. Example: Failed 4 times in a row while mining a node with a 95% success rate. Your failure rate for each try was 0.05 (1 is 100%, 0.05 is 5% etc), and you tried 4 times. So you type in "0.05 ^ 4" and hit enter. The number listed as "Rational Approximation:" is the chance of that happening. In this case it's 1 in 160,000. Pretty crappy odds but far from 1 in a million.
edit - Apparently you can type it in an even easier way, like (5%)^4.
Read on only if you want to know how random number generators actually work. It will get pretty technical from here on out.
Let's start with how numbers are represented in computers. You've certainly heard the word 'byte' thrown around a lot but you probably don't know what a byte actually is. It's 8 bits.
SO HELPFUL I KNOW!!! A bunch of bits is what you picture already when you imagine computer jargon or streaming numbers like in The Matrix. A bit is just a piece of information that can only have two values, 0 or 1. Now you probably don't care and it's not super important but the standard number system with 0,1,2,3,4,5,6,7,8,9,10,11,12...etc is base 10. Binary (nerd computer stuff) is base two. All you need to know about binary is that you can represent EVERY SINGLE NUMBER like 24, or 817,281,110 by only using 0's and 1's.
Obviously you need more than one bit to store anything with more than two values so we picked a number at random that seemed like enough for some useful data. We chose 8. Don't ask me why. But a BYTE is just 8 bits smashed together and considered as a whole. So while a BIT can only be '0' or '1', a BYTE can be '00000000', '11111111' or any combination of zeros and ones in between. I'll wait while you count up the number of possibilities with 8 slots, each of which can be 0 or 1.
That seems like enough time. It's 256. WAIT A SECOND you might say to yourself. That seems familiar! If you ever cheated in Skyrim (or Morrowind I think as well) you might have noticed that despite having the ability to type in any number you want for your Strength, it never goes above 255. This is because the programmers were stingy with the memory usage and decided to only store your Strength and all your other stats as one single BYTE. Why can't it go to 256? Because the number 0 counts as one option, '00000000'.
I'd like to take a moment now that you know what bits/bytes are to make you hate all Internet Service Provider commercials even more than you already do. They all scream at you, "8 MEGABITS PER SECOND OMG!!!". They are intentionally deceiving you because 8 megabits is only 1 megaBYTE per second. The true number is always 1/8th of what they shout. Not to mention the fact that you can never reach that number in any normal scenario.
But I digress. If you want a number higher than 255 you need at least two bytes to represent it in a computer. The technical name for a two-byte number is a SHORT. A short can store any number between 0 and 65,536. Need a bigger number? Then you can store it in a LONG (programmers are known for their creativity) which is 4 bytes and can hold any number between 0 and 4,294,967,296. I think you get the picture.
Why does any of this matter? Because Random Number Generators use super obscure math equations to 'randomly' pick a number between 0, and whatever the maximum value is that number can hold. I put the word random in quotes because technically it's not entirely random. Let me explain. I'd be happy to tell you about the inner workings of RNGs but I doubt even 5% of readers will make it this far so I'll give you the short version. Here's a start if you want to know more, http://en.wikipedia.org/wiki/Mersenne_twister.
Most RNGs use some complex equation to shift around individual bits in the computer in such a way that it's almost impossible to predict what you'll get. It's ALMOST impossible because even the most complex algebraic manipulation involves some variable, usually called X in math class. The number X is the 'seed' number and if you think about it for a minute I'm sure you will realize that no matter how ingenious the equation is it will always give you the exact same output for some number X. Computers are not like humans. They do not make mistakes and you can force a computer to compute e^√(tanh(x)) with x=5 as many times as you want but it will always give the exact same answer.
So now the problem becomes how do you pick a random 'seed' number for your random number generator? The infinite regress is solved by human ingenuity yet again. All computers are built with some form of an internal clock that in spite of daylight savings time and other crap marches forward inexorably. No date/time combination ever repeats because time only moves forward. It will only be 10:25pm and 26 nanoseconds EST on 11/6/2013 for 1 nanosecond. This digitally represented number will NEVER appear again.
Modern RNGs pick a seed number based on some, probably copyrighted, algorithm involving internal computer numbers like the clock and sometimes temperature of the CPU.
Now that you fully understand the complex nuances of every RNG ever created imagine yourself as a programmer. One of the staples of any programming library is always a robust Random Number Generator. There are many kinds to choose from but any respectable programmer will opt for one whose accuracy and 'randomness' far exceeds any purpose he has in mind. Since he doesn't have to write the complex algorithm himself all he has to do is specify where to get the seed number. For extremely sensitive information like nuclear launch codes they build special machines to generate specific seed numbers in a pattern known only to those who built it and maybe somebody who has 50 years to sit there trying passwords at a rate of 10 billion per second.
For online games it doesn't need to be this secure so they usually just generate the seed numbers at the location of their servers. If you think you've found a pattern with success rates on your melds or anything else you are mistaken. A new set of pseudo-random numbers is generated on a millisecond basis. You could hypothetically 'beat the system' if you knew the exact code used and the seed numbers were generated client-side (on your own computer) but I've never heard of a company doing this.
TL;DR:
You're more likely to remember failures than successes
Random Number Generation is a srs business and an unbelievable amount of thought has gone into developing the best methods. "The generation of random numbers is too important to be left to chance." - some mathematician you've never heard of
There's no programmer out to get you manually screwing with your gathering swings while laughing hysterically