On Tue, 2 Apr 2002, eric nelson wrote: > Not an expert on this, but I think the kernel adds entropy, from keypresses > and other things considered 'random', so results are not entirely > deterministic. You can look at the code in the random driver, random.c in > /usr/src/linux/drivers/char for some background. > After all, random is used to generate keys used in security, and those > hackers are pretty smart, and repeatable random sequences would allow certain > attacks.
random.c is part of the kernel. random() and rand() are C library calls that produce pseudo-random sequences. The random driver may be used to obtain a seed for random() or rand(), or it could be used to obtain random numbers on its own. You run a risk of extracting all of the randomness from the system if you depend on random for long random sequences, though, and a /dev/random that has run out of entropy is a file that will block until that condition changes. Having known psuedo-random sequences does allow you to "repeat" monte-carlo simulations. To answer Peter, yes, rand() is supposed to be deterministic for this very reason. I am puzzled by the same issue Ken is puzzled by, though... failing to call srand() should always cause rand() to yield the same pseudo-random sequence... it should never have yielded variable results in the first place! > On Tuesday 02 April 2002 06:26 pm, you wrote: > > > Date: Tue, 2 Apr 2002 14:47:20 -0800 > > > [CODE SNIPPED] > > > > So this is when the program is seeded to /dev/random: > > > p@satan% ./ising2-jfunc 4.0 > > > T: 4.0e+00 beta: 2.500e-01 trials: 1000 N: 10 M: 10 seed: > > > 3497451914 Average Energy: -1.273893 > > > Average magnetization: 0.425220 > > > Average |magnetization|: 0.531100 > > > Average magnetic susceptibility: 34.746600 > > > > And this is when the code is seeded to 1: > > > T: 4.0e+00 beta: 2.500e-01 trials: 1000 N: 10 M: 10 seed: > > > 3497451914 Average Energy: -1.326747 > > > Average magnetization: 0.495320 > > > Average |magnetization|: 0.495320 > > > Average magnetic susceptibility: 28.645040 > > > > And you've established that if you run it repeatedly you keep getting the > same thing: > > > T: 4.0e+00 beta: 2.500e-01 trials: 1000 N: 10 M: 10 seed: > > > 3497451914 Average Energy: -1.326747 > > > Average magnetization: 0.495320 > > > Average |magnetization|: 0.495320 > > > Average magnetic susceptibility: 28.645040 > > > > BUT four hours earlier: > > > Date: Tue, 2 Apr 2002 10:05:34 -0800 > > > > This is when you seed it to /dev/random: > > > T: 4.0e+00 beta: 2.500e-01 trials: 1000000 > > > N: 10 M: 10 seed: 208006379 > > > Average Energy: -1.057143 > > > Average magnetization: 0.002008 > > > Average |magnetization|: 0.251765 > > > Average magnetic susceptibility: 8.948655 > > > > And this is when you seed it to 1: > > > T: 4.0e+00 beta: 2.500e-01 trials: 1000000 > > > N: 10 M: 10 seed: 208006379 > > > Average Energy: -1.050182 > > > Average magnetization: 0.030723 > > > Average |magnetization|: 0.246092 > > > Average magnetic susceptibility: 8.692724 > > > > Why did 4 hours of time change the results when you seed it to 1 ??? > > _______________________________________________ > > vox-tech mailing list > > [EMAIL PROTECTED] > > http://lists.lugod.org/mailman/listinfo/vox-tech > _______________________________________________ > vox-tech mailing list > [EMAIL PROTECTED] > http://lists.lugod.org/mailman/listinfo/vox-tech > --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<[EMAIL PROTECTED]> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...2k --------------------------------------------------------------------------- _______________________________________________ vox-tech mailing list [EMAIL PROTECTED] http://lists.lugod.org/mailman/listinfo/vox-tech
