Ruby 如何产生一长串随机的数字?

keyboarder · 2012年12月05日 · 最后由 keyboarder 回复于 2012年12月06日 · 3507 次阅读

如何产生一长串随机的数字? 想到了一个笨方法,利用 SecureRandom 这个类 SecureRandom.random_number.to_s.split(".").last.to_i => 5700628921896753

SecureRandom.random_number.to_s.split(".").last.to_i => 3107219374342406

寻求更优雅更安全的写法。

你为什么会说这个不优雅,不安全呢

random_number 调用的是 random_bytes SecureRandom.random_bytes.unpack('C*').join

rand(999999999) + 999999999

SecureRandom.random_number(10**20)
 => 25940964009657619488 

合格不?

RANGE = 2**128
rand(RANGE)

#4 楼 @ywencn 就这个了 这个方法的随机数取得的位数是一样的,比如 10000,每次的随机数就是 1000-9999 之间的。 @pongyo 的方法去取到的随机数位数不一样。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号