如何在数组中插入随机值

时间:2015-12-18 04:49:51

标签: ruby

我尝试创建一个随机填充"A""D"的10 X 10数组。我找到了以下代码。

Array.new(10){Array.new(10) { rand >0.5 ? "A" : "D"}}

我无法理解代码。有人可以解释一下这段代码吗?

2 个答案:

答案 0 :(得分:4)

{}中的部分称为代码块

所以你要应用这种模式两次

Array.new(10){codeblock}

它说 - 创建一个包含十个项目的数组,其中每个项目都是代码块的结果

内部代码块:

{rand >0.5 ? "A" : "D"}

称为ternary operator。它每次都会选择一个新的随机数,并将其与0.5进行比较。如果数字大于0.5,那么“A”将是代码块的结果。否则它将是“D”

由于rand返回0到1之间数字的均匀分布,因此项目为“A”的可能性为50%,“D”为50%的可能性

答案 1 :(得分:0)

John's answer已经解释了您分享的特定代码段。

有很多方法可以完成你想要做的事情。以下是更多方法:

Array.new(10).fill (["A","D"] * 5).to_a.shuffle!
Array.new(10).fill ["A","D"].cycle(5).to_a.sample(10)