From: Kless Date: 2009-07-27T16:35:07+09:00 Subject: Re: Pseudo random For if this can help to somebody, I use a deck of 52 cards to get a better randomness. Although it could be used a deck of: number to return * 2 (or 3) ----------------------- def bytes(n=nil) # The range of possible values to each card is 256 (0-255), the # maximum length to representing an ASCII character. # By default returns 16 bytes (128 bits), a common value in salts and IVs. n ||= 16 # Gets 52 cards with values in range 0-255, and then they are shuffled. cards = (1..52).map { rand(256) }.shuffle # Finally gets 'n' cards from the deck, and it is encoded to ASCII. (1..n).map { cards[rand(52)] }.pack("C*") end ----------------------- On 25 jul, 22:56, wyhai...@gmail.com wrote: > Ruby uses a mersene twister for its prng. This provides a high quality source of pseudo random numbers for noncryptographic purposes. If you need random numbers for crypto or you need independent prng streams then you need a different source. > > Kirk Haines > Sent from my Verizon Wireless BlackBerry > > -----Original Message----- > From: Kless > > Date: Sun, 26 Jul 2009 06:55:12 > To: ruby-talk ML > Subject: Pseudo random > > Is safe to use Kernel#rand to get pseudo-random integers? > >