Re: 32-bit random numbers

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

Tommy Carlier wrote:

> I'll have another go:
> }}}
<eucode>
> function rand32(atom n)
> 	atom r
> 	if n <= #3FFFFFFF then return rand(n)
> 	else
> 		r = rand(#100) - 1
> 		for i = 1 to 3 do
> 			r = r * #100 + rand(#100) - 1
> 		end for
> 		return remainder(r, n) + 1
> 	end if
> end function
> </eucode>
{{{

> What does it do? It composes r out of 4 bytes, each byte is a random
> number between 0 and 255 ( = "rand(#100)-1" ).
> This makes r a random integer between 0 and #FFFFFFFF. The distribution
> should be as uniform as rand (each byte is independent from the other
> bytes).
> The "remainder(r, n) + 1" produces a random integer between 1 and n.

Yes, I think concatenation of four bytes works as well as concatenation
of two 16-bit values. Thanks!

Regards,
   Juergen

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

Search



Quick Links

User menu

Not signed in.

Misc Menu