On Wed, Oct 13, 2010 at 11:06:50PM -0400, Stephen Bloch wrote: > > On Oct 13, 2010, at 7:29 PM, Mathew Kurian wrote: > >> -- Is Racket an interpreted language? If not, how does it convert to >> machine/binary code? >> > As you know, Racket evolved from Scheme, which evolved from Lisp, which > in its earliest implementations (fifty years ago) was interpreted rather > than compiled. This has led many people to assume that ALL > Lisp/Scheme/Racket implementations must be interpreted rather than > compiled, even though that hasn't been true for decades. >> -- In general computing, how does the random function work? How can >> computer language ever create random numbers, that would be >> impossiible? >> > No, it's not impossible. If you want truly random numbers, you attach > your computer to a Geiger counter, or a cosmic ray counter, or something > like that. But that's expensive and slow.
There was actually a book published in the 50's or 60's with a million random digits that were generated in this fashion. The CRC tables republished an extract out of this book. I've always fantasized about seenig someone publish, as an example or "really" random numbers, some random numbers out of this book, whereupon I could complain, "Those aren't random at all. They're just the first fifteen numbers on page so and so of this book I hold in my hand." So this is the kind of argument that maks the definition of "random" philosohically deep. But it's very, very useful to have a sequence of pseudo-random numbers that can be regenerated identically from scratch every time you run a program. For example, when a program using random numbers crashes, you'd like to be able to run it repeatedly in a debugger and have it do exactly the same things every time until you narrow down the problem. -- hendrik > So most "random number > generators" are actually completely deterministic. For example, > > (local [(define seed 27) > (define (next-random limit) > (begin (set! seed (remainder (+ (* seed 13) 5) 473)) > (remainder seed limit)))] > next-random) > > builds a function that "acts random": since the seed is hidden, there's > no obvious way of predicting the next answer from the previous answer. > (I just made up the numbers 27, 13, 5, and 473; in fact, there are lots > of research papers on how to choose such numbers to make the results as > random-looking as possible.) Yeah, and these numbers aren't likely to give you a good one. Look up the paper with a title something like "Random Numbers -- good ones are hard to get" from a decade or two ago for a good and fst one. Or look up, as I mentioned elsewhere, the Mersenne Twister, which has a reputation of being very good, although slow. -- hendrik _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users