Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Predict Random Numbers

by theorbtwo (Prior)
on Mar 14, 2002 at 17:29 UTC ( #151748=note: print w/replies, xml ) Need Help??


in reply to Predict Random Numbers

Looks very interesting; I'll probably play with it a little when I get home.

OTOH, it looked a lot more intersting before I read the code. I was wondering, how do you determinte the a, b, n, and m? Is it possible to write an algo to determinte them for an unknown RNG? Given only M (which seems to be 1<<number of bits of output)? Given nothing? Using srand()? Without changing the seed?


We are using here a powerful strategy of synthesis: wishful thinking. -- The Wizard Book

Update:Changed "N" to "M" in "given only N".

Replies are listed 'Best First'.
Re: Re: Predict Random Numbers
by no_slogan (Deacon) on Mar 14, 2002 at 18:06 UTC
    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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://151748]
help
Chatterbox?
[ambrus]: I really don't like automagic stuff. I'm happy when computers do exactly what I tell them, even if that means they sometimes do the wrong thing.
[ambrus]: And I don't much like syntax highlighters. If you need a syntax highlighter to understand your code, then your code is written unclear.
[ambrus]: And if you need a syntax highlighter to color parenthesis green and numbers black and letters blue, then you're using the wrong font.
[ambrus]: I have to tolerate syntax highlighters when other people use them, but I don't use them myself. And sorry for the rant.
[GotToBTru]: I appreciate the ability to highlight matching brackets/ parentheses/ braces, both for my own code and the inconsistently indented code of others
[Corion]: I like editors that automatically highlight the matching parenthesis (like % in vi), but that's roughly the extent to which I like editor support ;)
[GotToBTru]: same here Corion.

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (12)
As of 2017-02-27 12:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?






    Results (385 votes). Check out past polls.