Re: 32-bit random numbers

new topic     » goto parent     » topic index » view thread      » older message » newer message

Derek Parnell wrote:

[snipped old text]

> Maybe this will be useful...
>
> -- rand32.e
> -- Produces a pseudo-random integer between 1 and N
>
> include machine.e
> object vOldSeed vOldSeed = #69F5C10D
>
> function rand32(atom N)
>     integer a, b
>     sequence d
>     atom X
>
>     d = date()
>     d = vOldSeed * d
>     vOldSeed = d[1] + d[2] + d[3] + d[4] + d[5] + d[6]
>     vOldSeed += time() * (time() + 17)
>     vOldSeed = floor(remainder(vOldSeed * (vOldSeed - 3), #3FFFFFFF))
>     set_rand(vOldSeed)
>     a = rand(#3FFFFFFF)
>     vOldSeed += d[4] + d[5] + d[6]
>     vOldSeed += (time() + 3.1427) * (time() + 619)
>     vOldSeed = floor(remainder(vOldSeed * (vOldSeed - 3), #3FFFFFFF))
>     set_rand(vOldSeed)
>     b = rand(#3FFFFFFF)
>     X =  and_bits(a, #FFFF) * #10000 + and_bits(b, #FFFF)
>     return floor(X - floor(X/N)*N) + 1
>
> end function
> constant debug = find("DEBUG:RAND32", command_line())
> if debug then
> for i = 1 to 32 do
>     printf(1, "%4d ", rand32(2))
> end for
> end if

Cool. Thanks, Derek!

Regards,
   Juergen

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu