如何计算ruby中生成的随机数

时间:2017-02-04 14:06:45

标签: ruby random

我有代码,它将生成随机数,除非生成的随机数为0.当结果为0时,循环中断。

所以当循环中断时,我想要一个代码,它不断添加保留生成的随机数并在最后显示它。我能用红宝石做到吗?

def batting
    loop do
    runs = [0,1,2,3,4,5,6]
    myruns = runs.shuffle.first
    Newscore = 
    puts "Press W to hit a shot"
    user_input = gets.chomp
    while user_input.include? "W"
        puts myruns
        until myruns == 0
            break
            Score = Score + myruns
            break

这会在Dynamic Constant assignment引发Score = Score + myruns错误,我基本上认为这是错误的,因为myruns会在每次生成的事件中不断变化?

所以,我想创建一个新变量,它将存储生成的所有随机数的总和,直到生成的随机数为0。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

你可能正在寻找这样的东西吗?

EAI_AGAIN

答案 1 :(得分:0)

您可以这样做:

def batting
  loop.with_object([]) do |_,obj|
    x = rand 7
    x == 0 ? raise(StopIteration) : obj << x
  end.sum
end

batting #=> 33
batting #=> 0
batting #=> 18

使用loop这会不断创建0到6的随机数rand 7。如果x == 0,我们使用三元运算符使用StopIteration来停止循环,否则我们将x推入obj数组(最初为[])。最后,我们总结obj数组。

主要方法:loopEnumerable#with_objectrandArray#sum