RNG, and why people need to stop worry about PRNG vs TRNG (probably)

Originally wrote this as a response to another thread, but felt it warranted its own discussion.

I have a problem with “Psuedo Random” as a term. For all intents and purposes, Psuedo Random is good enough, especially if the developers put any sort of effort into their PRNG engine.

Think about random (and “true” random) like this: all randomness boils down to the absence of knowledge. Do I know what cards are where after I shuffle a certain number of times? Do I know all the physics that will affect the die perfectly after it leaves my hand, or even while it is in my hand? Do we know exactly what seed and program the PRNG is using? No, so it’s all good enough random.

Extending this thought out to things that are thought to be “truely” random (atmospheric noise, radioactive decay, etc), all these things could technically, if we had all the information, be cracked.

Extend our capabilities out to God/a god/God-like figure, whatever all knowing thing you can imagine that doesn’t offend you by my merely using it as an example. As long as it is all knowing, it(he/she/etc) has all that information and therefore it isn’t random.

When you see people blame bad luck on PRNG and say if the game had true RNG, just know that this is just someone who learned the difference between PRNG and true RNG at one point and is convinced it’s relevant for some reason. It isn’t. All that matters is that you don’t know what’s going to happen, and the odds, for all intents and purposes, are just as good as stated.

Now, all that said, I’m fallible, and I’m open to the idea I’m wrong. Go ahead and convince me. <-I mean this in the nicest way possible. I also learned of the differences between the two in some computer science class, and questioned it when I heard it, and the professor, nor any of our resources, had satisfactory answers beyond quoting textbooks, essentially.


If there’s some organism that control this PRNG is maked in a way that really try to reproduce a TRNG, then probably you are right.

If no one control it and basically people can pretty much make inside of it whatever they want, it all comes if you trust that people or not then.

1 Like

Right, I understand THAT, at least. I don’t think there’s much incentive for them to lie though. They need success stories to drive people who aren’t having success jealous, and in turn spend more money. And the odds they show are low enough to make people rage with jealousy, essentially.

Even adding in something like a mersenne twister or whatever the en vogue randomizing algorithm is now a days should be enough that patterns can’t be detected (not that we have the capabilities to scrape enough info from the game to detect a pattern anyway). Essentially it’s unknowable, so it’s as random as anything else (assuming the trust issue, of course).


Sadly, it does matter. Predictability is only one aspect that makes a bad PRNG bad. The other is that you tend to get patterns and streaks, even if you can’t predict them. Which means you are more likely to see strings of bad, and strings of good, even if the overall odds work out. So in the macro it works out, but in the micro it doesn’t. We play in the mirco and a bad RNG very much would impact the game play and experience.

1 Like

True RNG also have streaks, and as I stated, PRNGs lack of predictably is equivalent to TRNGs, based on our lack of data and knowledge of the variables that lead to the generation of the outcome. Streaks are part of randomness, true or psuedo. I don’t think micro comparisons would be be very useful or distinguisable from T to P, I’m fairly certain even with a large data set you couldn’t tell them apart.

Correct and well known on point one, but totally you are missing point for number 2.

I did this as part of a career for a few years a few years back…the patterns and streaks of TRNG are totally different from a PRNG and a good AI tool can help you automatically detect that difference. We used this all the time to identify poorly working PRNG for cyber security purposes.


That said, modern PRNG with strong statistical properties aren’t particularly expensive to implement. There’s no reason not to use a good one like WELL.


But do you think an AI being able to tell the difference (if it had access to the data), translates to a functional difference at the UX level? I mean, presumably, hundreds of thousands of interactions are happening constantly and the RNG should be reseeded fairly regularly, how would a player even experience the difference at the micro level with just a fractional sliver of the data available to them? I think, even in a TRNG environment, we’d see the same complaints.

1 Like

As long as it converges to uniform, it’s fine with me.

Yes, the reason is the repetitive patterns and constant streaks. RNG has streaks, but they aren’t common (given a large enough range) and they don’t have patterns. That could impact the UX.

BTW, none of this is meant to be applicable to what SG is doing, just a general commentary.


Hmm. I mean, I can see if you think there are streaks across all data, that have a functional difference in outcome (which none of us would have enough data to even remotely assess), but I’m not sure when distributed amongst thousands of players at any given moment that those streaks even look like streaks. There are probably thousands of streaks that are broken and reformed before our next interaction with the RNG, so what we perceive as a functional bad luck streak on our end is really just two data points in a long line of good and bad luck with streaks in between. They may be part of streaks, but almost assuredly not the same streak.

How do you know the player distribution to RNG? How do you know what is server side and what is client side? If I do a 30 x pull, how is that treated vs other requests for the RNG?

You are making a lot of assumptions.

1 Like

Hmm, while that’s true, I think it’s a safe assumption most of this is handled server side, otherwise there’s a serious design flaw that potentially allows unscrupulous types to influence the result.
I would hope that nearly every interaction is it’s own .Next() call (or whatever the equivalent is), at the very least, even if the RNG is shared.
We do know that the game talks often with the server - the simple fact that losing connection for a couple of seconds breaks a game in progress should be evidence of that, I would hope that the RNG is off device, that is a basic programming idea.
The 30 pull I really couldn’t speculate on, but I have to imagine it’s one request with thirty results fed back. How the thirty are generated, who knows?

I think there are some basic assumptions that can be made though, any programmer who put any effort into it at all (and the game is programmed rather well as far as I can tell), should be able to put together a PRNG that is functionally the same to an end user: unknowable results that use the probabilities given. I don’t think that’s a stretch.

If I were on the backend job, the two main design goals (outside of security) would be:
1 - Unpredictability (this is good for the company)
2 - Fairness per transaction (this is good for the company and the player) - this fairness does not extend any further than the transaction at hand, and has no memory of the past. This can lead to an uneven distribution of good luck, and that’s GOOD for the company in the long run, and rewarding for the players that hit a good streak.

And functionally, attaining those two things is visibily no different than a TRNG to an end user.

My takeaway is that the game is programmed competently, as I’ve seen no evidence to the contrary (and I’ve definitely spent my time playing games that were programmed poorly), and that fact, combined with the motivation being there for this part of the game to be programmed well, leads me to believe that it probably is not a poorly implemented system.

You see people collecting aggregate TC20 pulls data that bears that info out. The percentages hold true in the aggregate, which is the important piece. An individual may never get the luck they want, but that’s not the implementation’s job. Think of it like the slot machines in Vegas - they are tested and regulated to ensure that each pull has the odds as stated, and that keeps people sitting there pulling for hours and hours thinking their machine is due, but the reality is, in the aggregate, a machine might hit twice in a 48 hour period and then go cold for months, and as long as the results play out over time, regardless of user, the probabilities are correct.

The same applies here, it doesn’t matter if your TC20 goes hundreds of pulls between 5*, as long as the data in aggregate across all players shows the probabilities playing out correctly.