我试图合并一些随机数。这些数字应该代表一个骰子。
例如,我想掷骰子5次,我得到以下结果:
4 2 1 4 6 。
这些都是个别数字,但我想要做的是将它们合并为42146 。
这可能是一个非常简单的问题,所以我为此道歉,但我还是Ruby的新手。
我通过这个产生[1,6]之间的数字:
number = 1 + rand(6)
答案 0 :(得分:4)
1.upto(5).map { rand(1..6) }.join.to_i
1.upto(5)
会为您提供5个元素的Enumerator map { rand(1..6) }
将map随机数between 1 and 6添加到上述每个元素中join
将连接到目前为止所有内容to_i
会将上述结果从字符串转换为整数答案 1 :(得分:1)
虽然所有答案都是正确的,但还有一个选择:
dice = 0
5.times do
dice = dice * 10 + rand(1..6)
end
puts dice
演示:http://ideone.com/WfagFT
这次你将所有内容视为整数。每次(5卷)你取结果变量,乘以10,然后在它的末尾添加新的随机数。没有必要使用其他任何东西。
当然,如果你需要它,这段代码也可以写成一行代码,并且与上面完全相同:
p @dice if 5.times { @dice = @dice.to_i * 10 + rand(1..6) }
答案 2 :(得分:0)
5.times.inject(0){|n, _| n * 10 + 1 + rand(6)}
答案 3 :(得分:0)
p Array.new(5){1 + rand(6)}.join # => "53325"