0

使用这些随机种子值会生成'Hello Word',但为什么呢?

seeds = [685_995_739, 811_060_588]

tree = seeds.map do |seed|
    srand seed
    leafs = leaf = '' # seed grow, become leaf
    leafs += (leaf + 64).chr while (leaf = rand(27)) > 0
    next leafs
end

puts tree.join ' ' # Seed become tree =D
4

1 回答 1

0

阅读文档srand,这些种子rand(27)将选择代表“Hello”和“World”的数字序列,以“0”结尾表示“结束”。

irb(main):042:0> srand 685_995_739
=> 0
irb(main):043:0> rand 27
=> 8
irb(main):044:0> rand 27
=> 5
irb(main):045:0> rand 27
=> 12
irb(main):046:0> rand 27
=> 12
irb(main):047:0> rand 27
=> 15
irb(main):048:0> rand 27
=> 0
irb(main):049:0> [8,5,12,12,15].map{ |n| (n+64).chr }
=> ["H", "E", "L", "L", "O"]

留给读者作为练习:编写一个脚本,为给定的结果字符串找到正确的种子,并在适当的时间内运行;o)

于 2013-03-11T04:50:13.903 回答