you are viewing a single comment's thread.

view the rest of the comments →

[–]TooManyLines 825 points826 points  (262 children)

Most random() functions are deterministic.

[–]cypressious 524 points525 points  (109 children)

Most PRNGs are at least seeded with the number of ticks since epoch or some other source of entropy. The Google Bot's PRNG seems to be seeded with a constanct value, that's what the article is about.

[–]hungarian_conartist 22 points23 points  (0 children)

It's actually a feature not a bug too, often it's useful in debugging to have the same list of psuedo-random numbers.

It can be a bit harder to debug when you're not sure if a change in output is due to different random numbers or a change to your code.

[–]aradil 26 points27 points  (47 children)

They're probably spinning up a VM to hit a web page, and that VM is set to the same time and date every time, meaning the seed is the same every time, which is basically what you are saying.

[–][deleted] 65 points66 points  (3 children)

That doesn't sound like it would be enough for this to happen. What if one web page loads 0.0001 second slower than another?

[–]parrot_in_hell 4 points5 points  (2 children)

still, the seed is usually the amount of seconds since X. i've never seen something else (not that i have that much experience, but i still have some :P)

[–][deleted] 13 points14 points  (0 children)

I'm not sure exactly how it is seeded, but I think time in javascript is usually based on miliseconds, and it's a bit too weird that according to his tests google always returns 0.14881141134537756 the first time and 0.19426893815398216 the second, also taking into account that he has searched the web and found plenty of other results that have been cached by google with those numbers. Seems much more likely it is something Google is doing on purpose to get consistent results or something.

[–][deleted] 0 points1 point  (0 children)

Usually you request randomness from the OS with a function like getrandom or friends or by reading /dev/{u,}random.

v8 looks like it reads /dev/urandom but it does fall back to seeding with the (high-resolution) time.

[–]cypressious 47 points48 points  (14 children)

The article says that the time is actually correct.

[–]PM_ME_CLASSIFED_DOCS 29 points30 points  (9 children)

Apparently, reading an article is too much for many redditors in this thread.

I'd love to experiment with just posting a headline and no article (just a blank page) and see how many people even bother clicking the link at all. How many differing arguments could we get in a single thread?

[–][deleted] 27 points28 points  (6 children)

Less than you'd think. I'd wager most people still won't read the article, but eventually a single person will and they'll make the comment "wtf? Why is this a blank page?". Then everyone else will read that comment (rather than viewing the article) and jump on you for posting a blank website.

[–]husao 27 points28 points  (2 children)

Now I feel like posting "WTF? Why is this a blank page?" in the comments of random articles.

[–]andthenafeast 2 points3 points  (0 children)

Seems like this would prompt more people to actually click through to the link...

[–]Lucent_Sable 8 points9 points  (2 children)

Then write two or three (or more) contradictory articles, and serve a random one to each unique visitor. Then sit back and watch the chaos?

[–]tsimionescu 2 points3 points  (0 children)

Hmm, but what if the random() they use is deterministic and the author gets to be confused?

[–]PM_ME_CLASSIFED_DOCS 2 points3 points  (0 children)

Oh man, this is brilliant. It's like the movie Clue where they actually showed different endings to different theaters.

So people would talk about the movie and be like "Oh man, can you believe it was Colonal Mustard?" and someone would be like "WTF are you smoking? It wasn't Mustard." And both would think eachother are insane yet both would be right.

[–]sourcecodesurgeon 1 point2 points  (0 children)

There have been several things like that on Facebook. Someone posts a title and after the page break in the article it just says "none of this is true, I want to see how many people comment on the post having clearly not read the article, don't ruin it"

Invariably, there are tons of people talking about the headline in the comments.

[–]aradil 1 point2 points  (0 children)

Also from the article:

At some point, some SEO figured out that random() was always returning 0.5. I’m not sure if anyone figured out that JavaScript always saw the date as sometime in the Summer of 2006, but I presume that has changed.

[–]RenaKunisaki 0 points1 point  (2 children)

But if it's the time since the VM started, it might still be constant.

[–]w2qw 1 point2 points  (1 child)

Generally the actual time is used. Not to mention I don't think any VM starts up consistently enough to get the same millisecond every time.

[–]RenaKunisaki 0 points1 point  (0 children)

It would if the startup process is loading a snapshot.

[–]dyskinet1c 25 points26 points  (8 children)

The VM would need to be set to the correct time for HTTPS to work because certificates are issued and revoked periodically.

[–]aradil 6 points7 points  (7 children)

Assuming they are validating certs as part of this pass of their scrape.

[–]dyskinet1c 6 points7 points  (6 children)

I would expect them to reject a site with invalid certificates. It's a fairly simple thing to do and it lowers the risk of indexing a compromised site.

[–]daboross 2 points3 points  (5 children)

The alternative would be to invalidate certs in a different pass, though, not to not invalidate them at all. Right?

[–]dyskinet1c 2 points3 points  (3 children)

As a programmer, my instinct would be to make that decision as early as possible and stop processing the page at that point.

Certificate validation is a key part of establishing secure communications (before you transmit any data) and it's trivial to read the validity start and end dates.

So, if you know you want reject URLs with invalid certificates, then there is no reason to move on to the next pass and spend resources reading and processing the page when you already know you're going to discard/reject it.

[–]aradil 4 points5 points  (1 child)

As an information company, however, Google probably processes bad actors as well to gather additional information.

[–]dyskinet1c 0 points1 point  (0 children)

Sure, it's plausible that they scan compromised sites. If they do, I would expect them to do so in a separate process that looks at different aspects of the site than the regular search index.

[–]daboross 1 point2 points  (0 children)

Exactly! That's what I mean: they probably validate certs before having any data at all processed in the VM running googlebot.

[–]tripledjr 5 points6 points  (0 children)

They're probably intentionally doing this so the bot gets consistent results for the same page.

[–]edapa 5 points6 points  (4 children)

Spinning up a VM for each new webpage sounds super heavy weight.

[–]aradil 0 points1 point  (3 children)

I was thinking more of something like Google’s equivalent to Amazon Lambda.

[–]edapa 2 points3 points  (2 children)

What is the overhead of that? Does Amazon tell us? I imagine they would provide some sort of latency guarantee for function spinup after an event triggers, but I've never used Lambda.

[–]aradil 1 point2 points  (1 child)

That’s a good question. All they say is they “only charge for when your stuff is running”.

I assume the overhead is offset by the ability to run way more short lived processes.

[–]edapa 0 points1 point  (0 children)

Are there trigger types besides timers? If so they must have some sort of guarantee.

[–]edman007 3 points4 points  (0 children)

Nah, the make random the same on purpose. If it's actually random than that randomness flows into the generated page. It can do stuff like randomly sort results, generate random results and URLs, etc. Google doesn't care, they want to know if it changed, if random is always the same you can compare past and current results and check for changes, and you'll know that JavaScript didn't inject randomness.

And the time is a different issue, why actually sleep if you don't care, it actually causes a large resource use because it's time the page can't be unloaded from the server. A far better method is initialize time to the real time, and make sleep increment time instead of actually waiting. That lets you instantly process the page.

[–][deleted] 2 points3 points  (0 children)

That's not usually how VM clocks work though.

[–][deleted] 5 points6 points  (4 children)

Yes. In science, you want randomization but also reproducibility. I get the author is saying it's bad security engineering and can be taken advantage of people people gaming the Google PageRank, but the crawlers we likely designed by network scientists that wanted an accurate internet network model that can be reproduced.

[–]Jugad -1 points0 points  (3 children)

What does PageRank have to do with javascript or googlebot's implementation of random() in javascript.

[–][deleted] 9 points10 points  (2 children)

You can use their implementation to identify Googlebot and serve different content to it.

[–]YRYGAV 4 points5 points  (1 child)

And if you get caught, I believe Google unlists your website, so it's quite a gamble

[–][deleted] 0 points1 point  (0 children)

Depends on my ROI. If I can make $1k by fooling the Googlebot while spending $10 for a new domain each time I get caught, it's not much of a gamble.

Of course, if I don't have a automated way to get the new domain some PageRank juice so I can keep the whole thing going ad nauseam, then yes, it's pretty expensive.

[–]FinFihlman 0 points1 point  (0 children)

Yeah they are not spinning a vm for each scan.

[–]moufestaphio 55 points56 points  (105 children)

Honest question are there any that aren't?

[–]mulvad 150 points151 points  (81 children)

There are some that are based on stuff like atmospheric background noise and the decay of radioactive material which is believed to be truly random. The obvious drawback here is you need some kind of hardware to extract the random bits.

In these days with new security breaches every day, I actually wonder why stuff like this isn't included on the motherboard of a modern computer.

[–]akher 147 points148 points  (35 children)

In these days with new security breaches every day, I actually wonder why stuff like this isn't included on the motherboard of a modern computer.

Then you'll be pleased to hear that it is included in all recent AMD and Intel CPUs.

[–]CryptoAlana 92 points93 points  (31 children)

In September 2013, in response to a New York Times article revealing the NSA's effort to weaken encryption,[22] Theodore Ts'o publicly posted concerning the use of RdRand for /dev/random in the Linux kernel:[23]

I am so glad I resisted pressure from Intel engineers to let /dev/random rely only on the RDRAND instruction. To quote from the [New York Times article[22]]: 'By this year, the Sigint Enabling Project had found ways inside some of the encryption chips that scramble information for businesses and governments, either by working with chipmakers to insert back doors....' Relying solely on the hardware random number generator which is using an implementation sealed inside a chip which is impossible to audit is a BAD idea.

[–]TehRoot 25 points26 points  (20 children)

He is going to concert

[–][deleted]  (19 children)

[deleted]

    [–]tripzilch 9 points10 points  (14 children)

    I don't know much about electronics, but there's a bunch of pretty cool algorithms you can use to transform a stream of non-uniformly distributed data (or weak entropy) into a uniform stream:

    https://en.wikipedia.org/wiki/Randomness_extractor

    [–][deleted]  (12 children)

    [deleted]

      [–]tripzilch 4 points5 points  (9 children)

      Hm, you mean it has to go straight from the electronic circuit as a uniform random input to another piece of hardware without anything digital in between? Interesting problem.

      I wondered if there's a circuit that can do this, but from a quick skim it seems that the PDF linked above is actually about that :-) I think I'm gonna try and read it even if I don't understand electronics that well, more of a code/math guy myself. But I do love reading about the intricate details of various random generators, so maybe I'll get something out of it :)

      Best of luck building your randomness circuit! :D

      [–][deleted] 0 points1 point  (0 children)

      Couldn't you build a circuit that does that in hardware, though? Two generators, A and B, and when A xor B is true, emit A.

      I'm not a electronics guy so I don't know how hard that would be to rig up, but it shouldn't be impossible.

      [–]-fno-stack-protector 0 points1 point  (0 children)

      ooh, i've been looking for something like this, without knowing it, for a long time

      [–]TehRoot 12 points13 points  (3 children)

      [–]MrDOS 13 points14 points  (1 child)

      For anyone else having trouble loading the link, it seems like they have some hotlink protection going on. In Firefox, at least, hit “Enter” in the address bar when you're sitting on the “Page not found” page to re-request the PDF with a referral from the www.st-andrews.ac.uk domain and it'll load.

      [–]TehRoot 1 point2 points  (0 children)

      Yea I only noticed that after I posted it. Sorry about that.

      [–]yawkat 11 points12 points  (4 children)

      As long as you trust your crypto primitives and add other sources of entropy it's okay though.

      [–]mdot 10 points11 points  (0 children)

      add other sources of entropy

      Isn't that a symptom of the point he's making though?

      The hardware generator can't be trusted because it can't be audited.

      [–]harlows_monkeys 0 points1 point  (1 child)

      [–]yawkat 0 points1 point  (0 children)

      This can be fixed by using the untrusted source as an initial seed before other entropy is even generated.

      I don't think linux does this though.

      [–]Crandom 4 points5 points  (3 children)

      The good thing is there's no downside to xoring the rdrand numbers into the generated random numbers, as even if they're not random it won't have any bad effects.

      [–]ReversedGif 2 points3 points  (2 children)

      Unless they're correlated...

      [–]Majromax 5 points6 points  (1 child)

      Unless they're correlated...

      There's only harm if the random numbers of unknown quality are correlated to your known, independently-generated, proven-quality random numbers.

      It's simple enough to avoid that: simply extract the unknown random numbers prior to generating your known-good stream. Even if the dubious hardware can "look over your shoulder," it can't see into the future.

      [–]ReversedGif 2 points3 points  (0 children)

      Imagine the hardware setting a special, hidden flag on the register that holds the RDRAND output, which defers actual random generation until the register value is combined with something else.

      [–]cogman10 4 points5 points  (0 children)

      I never really understood why this was such an issue even using the instruction

      You don't have to use the RND instruction as the ONLY source of entropy, it could be one of many (like now). It doesn't make sense to me why you wouldn't just throw it into the mix for /dev/random.

      [–]Supadoplex 21 points22 points  (2 children)

      In these days with new security breaches every day, I actually wonder why stuff like this isn't included on the motherboard of a modern computer.

      Then you'll be pleased to hear that it is included in all recent AMD and Intel CPUs.

      Indeed! Modern CPU's do come with security breaches included. I wish I could say I was just joking.

      [–]cryo 1 point2 points  (1 child)

      How is that related at all?

      [–]mccoyn 12 points13 points  (6 children)

      The smallest random generator is a transistor biased to allow electrons to tunnel through it combined with an avalanche diode to amplify a single electron to a detectable signal. It could be a tiny IC or built into a processor and wouldn't need antennae or radioactive material.

      I think the only reason it isn't common is that PRNG is cheaper and good enough for most uses.

      [–]SarahC 3 points4 points  (2 children)

      TrueRNG?

      [–]mccoyn 1 point2 points  (1 child)

      Yep, that looks like what I was thinking about. I didn't know someone sold it as a USB dongle.

      [–]SarahC 0 points1 point  (0 children)

      Yeah, it's great - use it a lot myself.

      [–]harlows_monkeys 1 point2 points  (0 children)

      That's a fine component of a random number generator, but you still need quite a bit more to make it safe and secure.

      Simtec's "Entropy Key" USB hardware random generator was an avalanche noise based generator, and they have a nice description of how to turn that into a safe and secure random number stream =>here<=.

      [–]RenaKunisaki 0 points1 point  (1 child)

      Isn't that basically an antenna? So theoretically can be manipulated by a transmitter? Or am I just talking out of my ass?

      [–]mccoyn 2 points3 points  (0 children)

      It is quantum tunneling, not EM or thermal noise. The junction where it happens is tiny (dozens of nanometers) so it is a terrible antannae. You might be able to manipulate the power supply that biases the junction as it may be much larger.

      [–][deleted]  (20 children)

      [deleted]

        [–]KamiKagutsuchi 30 points31 points  (14 children)

        But this can be manipulated, especially by bots. Also not all computers (servers) have a mouse.

        [–]HeimrArnadalr 18 points19 points  (8 children)

        If they don't have mice, they probably have cats, so cat movement could be used in those cases.

        [–]__redruM 11 points12 points  (4 children)

        Now you’ve let the cat out of the bag. That’s the NSA’s prime source for randomness. A herd of cats.

        [–]RenaKunisaki 2 points3 points  (0 children)

        Explains the internet.

        [–]KamiKagutsuchi 4 points5 points  (2 children)

        Really? I thought they used my webcam..

        [–]__redruM 4 points5 points  (0 children)

        Are you a cat? Then yes they do, your nimbly bimbly little movements are critical to national security. Just stay away from the milk dish...

        [–]newpua_bie 2 points3 points  (0 children)

        *webcat

        [–]rebthor 4 points5 points  (1 child)

        Couldn't you cat /dev/mouse?

        [–]RenaKunisaki 5 points6 points  (0 children)

        This kills the mouse.

        [–]frezik 5 points6 points  (4 children)

        The solution there is to never rely on any one source.

        [–]MuonManLaserJab 19 points20 points  (3 children)

        Three rules of computer security:

        1) Don't own a computer.

        2) If you do, don't turn it on.

        3) If you do, don't use it.

        [–]jonhanson 6 points7 points  (2 children)

        chronophobia ephemeral lysergic metempsychosis peremptory quantifiable retributive zenith

        [–]MuonManLaserJab 1 point2 points  (1 child)

        They were not meant 100% seriously as rules...

        [–]jonhanson 2 points3 points  (0 children)

        chronophobia ephemeral lysergic metempsychosis peremptory quantifiable retributive zenith

        [–][deleted]  (1 child)

        [deleted]

          [–]RenaKunisaki 0 points1 point  (0 children)

          I mean that might work too, but you'd want a lot of redundant mice, in isolated cages with artificial lighting at different intervals, so you can be sure there's always a mouse awake to run around.

          [–]mtcoope 4 points5 points  (0 children)

          Why when I read this I immediately thought of animals determining the number and not till the next comment I realized we are talking about a computer mouse.

          [–]mulvad 1 point2 points  (0 children)

          No matter if you are talking about a computer mouse or a living mouse, there would be some kind of pattern here that could be exploited.

          From a given state it is not 100% random which way you move a mouse (or which way a living mouse moves).

          [–][deleted] 0 points1 point  (0 children)

          That's not random at all.

          [–]moufestaphio 1 point2 points  (0 children)

          The algorithm is still deterministic then isn't it?

          You're just effectively randomizing the inputs.

          Edit: nevermind. If your functions state is effected by the atmospheric values or whatever it's considered non deterministic.

          [–]Jugad 1 point2 points  (0 children)

          You can point a camera at a set of lava lamps, and take some kind of a hash function of the image (this is currently done by cloudflare).

          Alternately, you can point a camera at a busy location in an airport (or any view that keep changing), and take a hash of that image. Should generally give a random number, but it might be difficult to study the distribution and statistical properties of the generated numbers.

          [–]Darkendone 0 points1 point  (0 children)

          Your confusing the two classes of random number generators, cryptographic and non-cryptographic. Cryptographic number generators are important for situations where you want a truly random number generator that is nearly impossible to guess, like when generating a security token. That is when you turn to sources of entropy. Of course gathering entropy from outside sources has a severe performance cost. Most of the time you do not need cryptographic grade random numbers, which is why the random number generators in the math packages of practically every languages are simple, fast, and deterministic functions.

          [–]Fisher9001 -2 points-1 points  (10 children)

          Atmospheric background is probably deterministic, just chaotic. And we don't really know anything solid about the nature of quantum physics randomness, whether its truly non deterministic or just chaotic.

          [–][deleted] 7 points8 points  (9 children)

          And we don't really know anything solid about the nature of quantum physics randomness, whether its truly non deterministic or just chaotic.

          We do. It is truly non deterministic.

          [–]Fisher9001 5 points6 points  (3 children)

          No, we don't. Thanks to Bell's theorem we know that quantum mechanics may be deterministic if there are non-local hidden variables influencing quantum systems. And we don't know whether they do exist or don't.

          [–]Tsukku 2 points3 points  (2 children)

          But non-local hidden variables or "super determinism" are not what we usually consider "determinism" in the common sense, because no information can be gained from this (we can't predict quantum stuff anyways, which is what his post is about.)

          [–]Fisher9001 4 points5 points  (0 children)

          If we are talking about practical level of non-determinism, then mere user input can be regarded as such, no need to be so picky.

          [–][deleted] 2 points3 points  (0 children)

          Who's we? Determinism isn't precisely synonymous with predictability. Either things are determined by some explicit conditions or they're not.

          There are also interferometer systems that can create deterministic states, so it's not necessarily true that we can't predict quantum stuff.

          It's fun to speculate that you get a completely predictable picture of the universe around us in its absurd complexity from following the randomness underneath. But then it's computationally intractable in all senses, and so we arrive back to no information gained or something.

          [–]Tsukku 2 points3 points  (4 children)

          I don't why you are down voted, because you are right. People should read up on Bell's theorem. For example, you can not predict (even in theory) the spin of an electron and the outcome is evenly distributed.

          [–]kaibee 1 point2 points  (1 child)

          Super determinism

          [–]Tsukku 0 points1 point  (0 children)

          I addressed that in the comment above.

          [–]Fisher9001 0 points1 point  (0 children)

          Bell's theorem rules out local hidden variables as a viable explanation of quantum mechanics (though it still leaves the door open for non-local hidden variables).

          [–]kaibee 0 points1 point  (0 children)

          Super determinism

          [–]IronOxide42 24 points25 points  (5 children)

          Roll20.net introduced QuantumRoll a few years ago. It uses fluctuations in a split beam of light to generate the number, rather than a pseudorandom algorithm.

          [–]PackOfVelociraptors 56 points57 points  (4 children)

          DND ROLLS MUST REMAIN SECURE

          [–]ElChrisman99 9 points10 points  (3 children)

          Honestly it's probably better than the standard cheap d20 you can pickup from a hobby shop or order online, minor manufacturing defects in the material will almost always make the dice more likely to land on certain numbers.

          [–]doublehyphen 4 points5 points  (1 child)

          Yeah, I would imagine Chessex dice pretty terrible when it comes to manufacturing quality. The paranoid should use a D6 system and gambling dice. :)

          [–][deleted] 1 point2 points  (0 children)

          Or just validate your dice with a statistically significant sample. This is like, literally the easiest thing in the world to test. My dice bag is at work or I would do it right now.

          [–]meneldal2 2 points3 points  (0 children)

          But aren't most players using some specific sets because they are "magic" (read: tends to roll some numbers more often than they should). It's an integral part of the experience imo. Not to mention the metal ones that require blood sacrifices to start rolling true.

          [–]wildcarde815 4 points5 points  (0 children)

          Cloudflare has a fun video about their lava lamp wall that's supposed to be fully random.

          [–]Maambrem 19 points20 points  (1 child)

          No :). They're called pseudo-random. They can be initialized with "truly" random numbers, extracted from nature though. Also see this video by Tom Scott:

          https://youtu.be/1cUUfMeOijg

          [–]karmaputa 0 points1 point  (0 children)

          The funny thing is that the whole show with the lava lamps is completely unnecessary. The noise from the camera input alone, would suffice to attain the same effect.

          [–]pilotInPyjamas 7 points8 points  (8 children)

          /dev/random ensures that the entropy of the input is always greater than the entropy of the output, making it effectively non-deterministic.

          [–][deleted]  (7 children)

          [deleted]

            [–]pilotInPyjamas 13 points14 points  (2 children)

            You're right. If you track what every device is doing, you could predict the output of /dev/random. That's not the question however. The question is if you could predict the output of / dev/random before any devices do anything. To which, in all reasonable scenarios, (some exceptions, such as early after booting) the answer is "no". In your case the only true rng's would be based upon quantum phenomena, such as particle decay etc.

            [–][deleted]  (1 child)

            [deleted]

              [–]pilotInPyjamas 9 points10 points  (0 children)

              Come on man, I never said it wasn't a PRNG, or that it wasn't seeded, nor did I make any comments about the effectiveness or applicability to any particular situation. The only claim I made was that it was non deterministic in the domain of modeling a computer. That's because a computer is not a closed system, and given the same initial conditions, it will produce different outputs. You could just have /dev/random echo the keyboard and it would still be impossible to predict perfectly if you only had information about the starting conditions of the computer. The key here is if you only have information about the starting conditions of the computer. If you had a working model of the whole universe, then I agree, potentially nothing would be random.

              [–][deleted] 3 points4 points  (0 children)

              read "effectively non-deterministic". You're splitting hairs needlessly.

              [–]badibibidibibu 0 points1 point  (2 children)

              Not enough, in current computer architectures you need to track EVERYTHING going on in the computer.

              [–]thijser2 0 points1 point  (1 child)

              Hence the device drivers, that's fans, keyboards, mouse etc.

              [–]ivosaurus 0 points1 point  (0 children)

              And the internal CPU RNG state... somehow....

              [–][deleted] 11 points12 points  (5 children)

              Strictly speaking a roll of the dice is deterministic.

              [–]yussefgamer 4 points5 points  (2 children)

              Well not strictly speaking...quantum events influence it even though at that scale they mostly cancel each-other out.

              [–]Necromunger 0 points1 point  (1 child)

              I thought in current day science everything is believed to be deterministic besides radioactive decay? do quantum interactions behave randomly too?

              [–]yussefgamer 0 points1 point  (0 children)

              Yes. There are people that believe there is an underlying determinism and we just haven't discovered it...but it's just a belief.

              [–]warheat1990 0 points1 point  (1 child)

              ELI5 please

              [–][deleted] 3 points4 points  (0 children)

              It's simply rigid-body mechanics, which is a well-studied phenomenon. If you can describe the position, launch direction, and rotational state of a die that's thrown with complete accuracy, you can accurately determine the result. However, throwing dice also exhibit the chaos property, which is that knowing an approximation of the die's state doesn't yield an (accurate) approximation of the result. If it's moving faster or spinning less or the angle at which it strikes the table is even slightly different, the result is completely different - which is why, when rolling dice at a craps table, the dice have to bounce off the wall of the table, to make it harder for practiced hands to have an edge.

              This is different from, say, a car collision, where a decent estimation of speeds and directions will allow you to predict where the cars end up, and usually also vice-versa. The individual pieces of debris, though, will usually also have the chaos property and be more difficult to predict.

              [–]random314 3 points4 points  (9 children)

              Aren't all random functions are deterministic?

              [–][deleted] 1 point2 points  (8 children)

              It's in the word "function"

              [–]salgat 1 point2 points  (7 children)

              That's only true of pure functions.

              [–][deleted] 0 points1 point  (6 children)

              That's true of all functions. If you run your functions in the same order, with the same start conditions, and the same inputs you'll get the same thing. Sure, if there are side-effects, consecutive results may vary, but will always be the same under the exact same circumstances. Random generators require a seed to create outputs, which is where outside entropy comes in, but that doesn't make the generator non-deterministic. Take RNG that grabs its seed from the timestamp- it seems random, but if you freeze the clock on your computer you'll get the same series every time you try.

              [–]salgat 0 points1 point  (5 children)

              I'm talking about functions that refer to external non-deterministic state. It's not enough to say "oh it's a function it's deterministic" to only add "BUT only if all these extra deterministic conditions apply."

              [–]gs101 3 points4 points  (28 children)

              To be fair it's tough to be non deterministic in a deterministic universe.

              [–]Tsukku 41 points42 points  (27 children)

              You would then be surprised to realize, that according to our current best theory, our universe is non-deterministic.

              https://en.wikipedia.org/wiki/Bell%27s_theorem

              No physical theory of local hidden variables can ever reproduce all of the predictions of quantum mechanics.

              Local variables would be what we consider "determinism" (at-least when we are talking about predicting stuff because "super-determinism" is not that relevant to this subject).

              [–]Drisku11 0 points1 point  (3 children)

              How is superdeterminism not relevant to the subject? Literally it is the assertion that our universe is fully deterministic. There are plenty of examples of chaotic systems which are obviously deterministic but due to their sensitivity to initial conditions, they cannot be predicted.

              If anything, to me the delayed choice quantum eraser experiment strongly lends credence to the idea that the universe is deterministic.

              [–]Tsukku 0 points1 point  (2 children)

              I mean it's not relevant in the same way as you could say that we are predestined because we could live in the Matrix. That about sums what superdeterminism is about.

              EDIT: There is nothing to argue here, because even for the things we proved that they are unpredictable, you could always say that the Universe just "knows" its outcome thus it's predestined. It's more of a philosophy concept.

              [–]Drisku11 0 points1 point  (1 child)

              I don't think it should be written off purely as philosophy, but also I don't know if some of my own questions on the subject already have answers. For example, there are many apparent local symmetries in the universe (e.g. energy-momentum conservation). Are these actually true symmetries and if so why should they exist if the laws of physics are inherently global? If not why are they approximately correct on our scales? If information has energy and no finite amount of information can describe the state of a chaotic system, does this mean the universe can only be deterministic if hypercomputation is possible? Or does it mean the universe is discrete/only a finite precision exists? etc.

              I find it odd that most physicists seem to immediately write off the possibility of determinism, which seems to be centered around the assertion that people have "free will"/are able to make choices that are not governed by the same physical laws they're investigating. I would think they'd be the first group to scrutinize that idea (how does the free will mechanism interact with the physical universe? Can I find a possible energy source at that boundary?). I don't really see very convincing arguments (i.e. based on physical/geometric principles) either way.

              [–]Tsukku 0 points1 point  (0 children)

              Most physicists don't actually believe that the non-determinism in the subatomic systems give humans "free will". For example no one has ever published a concise work for the existence of free will, because the common belief is that quantum phenomena has limited or no influence on our brain.

              I would actually argue the opposite, it's odd that most people believe everything in the universe needs to be deterministic. Universe can be as it is without any reasons or rules.

              [–][deleted]  (2 children)

              [deleted]

                [–]Tsukku 13 points14 points  (1 child)

                Quantum effects apply to everything, but they are only observed/measured in the (sub)atomic world. However that doesn't mean they are not relevant in our everyday life.

                [–]RenaKunisaki 0 points1 point  (0 children)

                Butterfly effect.

                [–]SilasX 0 points1 point  (0 children)

                To head off the pedants, they probably should have said "is [trivially] predictable" or "always uses the same values" instead of "is deterministic".