i can't find it right now, but gruenes has already explained their RNG systems somewhere here on the forums (long time ago though)
so if you really want to do the digging, at least you know that the answer is out there somewhere
Iirr it has something to do with defined "sets" that the server goes through, depending on your resistrate.
So, for example, a 25% resistrate could be coded to always go through this sequence "success, succes, success, resist" and then repeat. That wouldn't be random though and too predictable. So you could make it better by going "success, succes, success, resist, success, succes, resist, success, succes, resist,success, succes" which would be a bit less noticeable but still very far away from randomness.
Now imagine putting in chains like "success, resist, succes, resist" for bad luck and "success, success, success, success" for good luck.
This is VERY simplified, the "chains" are MUCH longer, and by taking a random starting point and/or changing it by different triggers there is no way to find out the chain and predict what will happen next. So you get really close to randomness at least in playerfeeling and can at the same time make sure that something like "resist, resist" doesn't exist anywhere in the chain for a certain resist-%
But again, this is overly simplified and is just a short overview into the general method. If it interest you you should dig up gruenes posts about it, i remember that it was a quite intresting read.