Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Re: Predict Random Numbers

by no_slogan (Deacon)
on Mar 14, 2002 at 18:06 UTC ( #151765=note: print w/ replies, xml ) Need Help??


in reply to Re: Predict Random Numbers
in thread Predict Random Numbers

For drand48(), the manpage tells you the constants a, b, and m. To get n (the number of outputs from int(rand*256) that are used), I used trial and error. There's a mathematical derivation of what values of n are likely to work in another paper, but that doesn't seem to be available online.

Determining a, b, and m using srand() can be automated in some cases, but it takes a bit of guesswork. If m is a power of 2 and b is small enough, you'll see an obvious pattern in the output of:

for (0..30) { srand(1<<$_); printf "%030b\n", rand()*(2**30); }
You can work out a and take a guess at m and b from that -- a is the part that moves, b is the part that stays still, and m is whatever seems big enough to hold it all.

There are several papers (including the one I mentioned before) on determining those constants using only the output from rand(). Some of them use the L3 algorithm as well.


Comment on Re: Re: Predict Random Numbers
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://151765]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (5)
As of 2015-07-05 14:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (67 votes), past polls