5 ms·
Every random() function is kind of deterministic, but still very interesting discovery!
by kmbriedis 9y ago
Every random() function is kind of deterministic, but still very interesting discovery!
- TomAnthony 9y agoYeah, as was pointed out in /r/programming, it is perhaps an imperfect title in hindsight!
- KyeRussell 9y agoTechnically true, but pointless pedantry when I'm sure that most people are on the the same page wrt pseudorandomness. Typically what I'd expect of /r/programming.
- skrebbel 9y agoTotally down nitpick alley yeah, but: Not if fed by an external source of randomness (eg cosmic rays).
- philbarr 9y ago> (eg cosmic rays). YouTube copyright violations? The chance of getting a response from Google support?
- skrebbel 9y agoI love those. A bit easy to game if you have the right job at Google, but still this is cool. I'd also assume that the Twitter firehose could be a great source of randomness.
- Godel_unicode 9y agoSince we're nitpicking; deterministic effectively means same input produces same output. Input includes the seed. All PRNGs are deterministic.
- squeaky-clean 9y agoJavascript does not allow you to set the seed for the default PRNG. So for our purposes it's essentially non-deterministic. You need to use a custom library if you want to be able to specify your seed.
- Godel_unicode 9y agoContinuing the nitpicking: "JavaScript" isn't actually what prevents setting the seed, you're talking about a common implementation detail of specific JavaScript runtimes (Mozilla’s documentation says their seed can't be changed, for instance). A runtime developer could, as Googlebot apparently does, seed the prng with a constant value. You could also use some user-provided constant as the seed. All three are compliant with the letter of the spec. Bottom line: the PRNG is, as all PRNGs are, deterministic. The user-facing math.random API using the underlying PRNG may or may not be. Those are distinct things. From the spec's description of math.random with regard to random or pseudo-random: "...using an implementation‑ dependent algorithm or strategy."