如何合计ruby中生成的随机数
我有生成随机数的代码,除非生成的随机数是0。当结果为0时,循环中断 因此,当循环中断时,我需要一个代码,它不断添加不断生成的随机数,并在最后显示它。我能用ruby做吗如何合计ruby中生成的随机数,ruby,random,Ruby,Random,我有生成随机数的代码,除非生成的随机数是0。当结果为0时,循环中断 因此,当循环中断时,我需要一个代码,它不断添加不断生成的随机数,并在最后显示它。我能用ruby做吗 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 wh
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
这是在Score=Score+myruns
处抛出Dynamic Constant assignment
错误,我基本上认为这是错误的,因为myruns
在每个生成的事件中都会不断变化
所以,我想创建一个新变量,它将存储所有生成的随机数的总和,直到生成的随机数为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
def击球
loop.with_object([])do | j|
x=7兰特
x==0?升起(停止迭代):obj 33
击球#=>0
击球#=>18
使用循环
可以连续创建0-6之间的随机数,随机数为兰德7
。如果x==0,我们使用三元运算符以StopIteration
停止循环,否则我们将x
推入obj
数组(最初是[]
)。最后我们对obj
数组求和
关键方法:
循环
,可枚举#带对象
,兰德
,数组#求和
,你可能在寻找类似的东西吗
def batting
runs = [0,1,2,3,4,5,6]
final_score = 0
puts "Press W to hit a shot"
user_input = gets.chomp
while user_input.include? "W"
myruns = runs.sample
if myruns != 0
final_score += myruns
else
break
end
puts "myruns=#{myruns}","final_score=#{final_score}"
puts "Press W to hit a shot"
user_input = gets.chomp
end
puts "myruns=#{myruns}","final_score=#{final_score}"
end
嗯,
提升(停止迭代)
?为什么不来一次简单的休息?@SergioTulentsev嗯,我有两种想法。尤其是在阅读了此处评论中的讨论后,@MrityunjeyanSbreak
要求您将obj
作为参数传递。否则我就不太确定了,请参阅上面的链接以了解关于这个的讨论。@sagarpandya2好的!但在代码中,是否列出了数组中生成的所有随机数,并具有数组列表的总和?取而代之的是,我想在变量中求和,这样每次我的和为零时,可以将和填充到变量中,并将其添加到最终分数中?当我只生成一次代码时,您的代码运行良好?如果我下次生成它,以前的数据就会丢失。像现在一样,我必须创建像variable=loop一样的循环。使用_object([])do |,obj |
?@sagarpandya82:btw,break
不需要对象。感谢这一点,它实际上可以打印多个随机数,而不是一次一个,为什么myruns=runs.sample
创建了两次?一旦进入while
循环,下一次进入'until'?我上面写的代码,每次按W
时都会打印一个随机数。我想创建一个变量,将每次生成的随机数相加,直到myruns=0,然后发布break
并将总和添加到最终分数,这样每次调用此def
时,它都不会干扰最终分数。为了做到这一点,我需要一个存储和的变量,而不是数组。你能更清楚地说明你需要什么吗?1。每次按下W
时生成随机数
。2.如果Random number
为0,break
和total
将生成的随机数分配给一个变量。这就是进度!哇!如果myruns=0
继续添加数字是此处逻辑的关键。令人惊讶的是,到目前为止,我一直在等待它0
将生成的数字作为一个整体进行添加。这是更好的解决方案。谢谢