Ruby中如何在一个表达式内实现两个独立随机值的相乘?
解决Ruby中两个独立随机数相乘的问题
嘿,刚入门Ruby碰到这个小困惑太正常啦!其实解法和你用加法的思路完全一致——既然加法是调用两次rand然后相加,那乘法只要把加号换成乘号就好啦:
rand(1..6) * rand(1..6)
这样每次运行都会独立生成两个1到6之间的随机整数,然后把它们相乘,结果范围就是1(1×1)到36(6×6),和你加法示例里的逻辑完全对应。
为什么你原来的写法不对?
你之前写的2 * rand(1..6),本质上只调用了一次rand(1..6),得到一个随机数后再乘以2,相当于把同一个随机数复用了两次,所以结果只能是2、4、6这类偶数,并不是两个独立随机数相乘的效果。
额外小技巧:封装成方法(可选)
如果之后你需要多次用到这种“两个骰子相乘”的逻辑,可以把它封装成一个简单的方法,用起来更方便:
def dice_product rand(1..6) * rand(1..6) end # 调用方法获取结果 dice_product # 比如返回 15(3×5)、24(4×6)等等
内容的提问来源于stack exchange,提问作者K James
相关产品推荐
相关产品推荐

