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 に答える