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 <jonas.... / googlemail.com>
>
> Date: Sun, 26 Jul 2009 06:55:12
> To: ruby-talk ML<ruby-t... / ruby-lang.org>
> Subject: Pseudo random
>
> Is safe to use Kernel#rand to get pseudo-random integers?
>
>