When random numbers are too random: Low discrepancy sequences (2017)
blog.demofox.org
blog.demofox.org
"Just a funny story about random numbers: in the early days of computers people wanted to have random numbers for Monte Carlo simulations and stuff like that and so a great big wonderful computer was being designed at MIT’s Lincoln laboratory. It was the largest fastest computer in the world called TX2 and was to have every bell and whistle possible. a display screen that was very fancy and stuff like that. And they decided they were going to solve the random number problem, so they included a register that always yielded a random number; this was really done carefully with radioactive material and Geiger counters, and so on. And so whenever you read this register you got a truly random number, and they thought: “This is a great advance in random numbers for computers!” But the experience was contrary to their expectations! Which was that it turned into a great disaster and everyone ended up hating it: no one writing a program could debug it, because it never ran the same way twice, so ... This was a bit of an exaggeration, but as a result everybody decided that the random number generators of the traditional kind, i.e., shift register sequence generated type and so on, were much better. So that idea got abandoned, and I don’t think it has ever reappeared."
also, there are other intentional sources of nondeterminism in current programming environments, such as aslr and the random hash salt python and perl apply to thwart hash-collision dos attacks
I will look for the article.
This was different from the old gpg prompts that instructed to move the mouse around when generating keys.
update: it was probably this effect. https://retrocomputing.stackexchange.com/a/11535
[1]: https://the.earth.li/~sgtatham/putty/0.80/htmldoc/Chapter8.h...
Stuff like this
if (any input changed)
RNG_seed ^= sysclk;
It's helped on numerous occasions where two or more identical systems co-exist (share a bus for example). Without entropy the systems RNGs are always in sync, which causes all sorts of problems.For example, on a CAN network bus collision you're supposed to back off a random amount of time. If the colliding systems RNGs are in sync, they keep colliding over and over endlessly.
Entropy will kick you in the ass if you don't think about it. Which is why I always make sure to include it.
You can always turn this off in DEBUG builds.
Of this would be true, then no one would use VMs and cloud instances.
It resurfaced, much later.
https://en.wikipedia.org/wiki/RDRAND
The main application is cryptography. I am not aware of Monte Carlo simulations that use real random numbers. Plus, true RNGs are often biased, so in the end, you still have a PRNG, the true RNG only being used to inject some entropy.
Ray tracing? Any sampling bias can be incredibly obvious there.
I have no idea how old your story is... but in any case, there has been an update: Cloudflare is now using lava lamps as "random numbers as a service", and the idea isn't new either, SGI ran it in the late 90s [2].
[1] https://blog.cloudflare.com/randomness-101-lavarand-in-produ...
Consequently, the radioactively-generated HotBits server has been retired as of the end of 2022 (more precisely, at 00:00 UTC on 2023-01-01).
https://www.fourmilab.ch/hotbits/retired.htmlThe OG John Walker merch is still available though ...
Still, it shows the idea did reappear. :)
The group of AAA devs laughed it off as not being feasible but our game had market validation (10m+ downloads). It made the game fun and eliminated the "I can't believe I got randomly grabbed twice within 5 seconds" type of interactions that make you want to quit.
We also observed a lot of panicked players jumping, twisting and doing everything but hitting 'shove' the 'V' key - especially streamers. So we added in support for being able to jump repeatedly/shake to get out of a grab.
Random is too random when it comes to gameplay enjoyment for sure.
This is a very good write-up on solutions to the random placement (2D) and random interaction over time (1D) problems without resorting to less savory solutions like I made.
I would be very surprised if they actually said "feasible", and wonder if you happened to paraphrase as such. Your solution is indeed great if you only need to ensure that grabbing shouldn't happen too frequently, and no different from a temporary invulnerability after the damage in the classic game design (i.e. a validated strategy), but also not much flexible from that point. I'm sure that they have many other things to worry about as well.
Recovering alcoholics and game developers ... seems something that goes well together :)
https://engineering.atspotify.com/2014/02/how-to-shuffle-son...
There's no winners here, the randomness purists will say 'well if shuffle plays all the songs in alphabetical order, or all your Metallica songs first, or some other order, they're all perfectly legal permutations and as likely as each other'.
Then the majority, folks who just want to listen to a variety of music, who will say 'how can it possibly be random if all the Metallica songs are together or Pantera songs are together, or Christina Aguilera songs are together?'
I think in the end Spotify did the right thing here by opting to be less mathematically purist, and doing what users actually want from a shuffle.
There is a separate (and maybe unrelated) issue which is that dynamically generated playlists seem to heavily favour well-known songs, which may be what you're referring to.
But yeah, this article is coming up on ten years old now. I would be surprised if the shuffle algorithm is still the same.
They observed that sometimes, the amounts in the tax returns were too “random” though not in exactly the same sense as the article.
For example, people manually filling out bad tax returns would never use an amount like $5,000 because the number didn’t feel random enough.
This type of analysis is always fascinating and I still see new applications from time to time.
https://extremelearning.com.au/unreasonable-effectiveness-of...
You should definitely read that one instead. It's such a great method (and article) that I'll even forgive their use of "unreasonable effectiveness".
Also, the graphics are much prettier there if you like that kind of thing (which I do).
When Random Numbers Are Too Random: Low Discrepancy Sequences - https://news.ycombinator.com/item?id=14439705 - May 2017 (1 comment)
https://www.sciencedirect.com/science/article/pii/S089812211...
Useful for PDE and geometry.
the first few approximants of pi using http://canonical.org/~kragen/sw/netbook-misc-devel/contfrac.... are 22/7, 333/106, 355/113, and 103993/33102. the large jump from 22/7 to 333/106 means that ε is tiny in π = 22/7 + ε. so you see 7 cleanly defined groups, and that's all you'll see for a long time, until you have several hundred samples, at which point i think you'll have 106 or 113 clusters, depending on how you squint, and that will remain the case for tens of thousands of samples
by contrast the first few approximants of √2 are 3/2, 7/5, 17/12, 41/29, 99/70, 239/169, 577/408, etc. you never get a large jump from one denominator to the next
btw does anyone know how to wring these out of pari/gp? vecsort(vecsort([bestappr(Pi, i) | i <- [1..10000]],,8), (a, b) -> denominator(a) - denominator(b)) gave me [3, 13/4, 16/5, 19/6, 22/7, 333/106, 355/113], and i don't really know what to make of that. also it's obviously not a good way to get approximants like π ≈ 4272943/1360120. i don't know how to use pari/gp very well
pcf = continued_fraction(pi)
pcv = pcf.convergents()
pcv[10] # prints your approximantalmost certainly unrelated
Edit: the golden ratio is also a quadratic number, so this intuition is wrong in the end!
[1]: https://en.m.wikipedia.org/wiki/Periodic_continued_fraction#...
Time will tell how this impacts the game's enjoyment.
https://github.com/google-research/tuning_playbook?tab=readm...