返回随机布尔值的最佳方法

Chu*_*ron 101 ruby

我已经使用它一段时间返回truefalse建立假种子数据.只是想知道是否有人有更好,更简洁或冗长的方式返回truefalse.

rand(2) == 1 ? true : false
Run Code Online (Sandbox Code Playgroud)

tok*_*and 240

使用Array#sample的声明性代码段:

random_boolean = [true, false].sample
Run Code Online (Sandbox Code Playgroud)

  • **`[true,false] .sample`比`rand(2)== 1`更快**.当我执行每次操作*1000万次*时,`rand`方法是2.179s.`sample`方法是1.645s. (4认同)
  • [true, false].sample 不快于 rand > 0.5 (2认同)

a'r*_*a'r 35

如何删除三元运算符.

rand(2) == 1
Run Code Online (Sandbox Code Playgroud)

  • 它更紧凑,但我更喜欢`[true,false] .sample`,因为它立即显而易见.`rand(2)== 1`可以使用ruby <1.9,这很好. (2认同)
  • 既然只有'0`和`1`,你也可以使用`rand(2).zero?` (2认同)

Jes*_*G17 15

我喜欢用rand:

rand < 0.5

编辑:此答案用于阅读rand > 0.5rand < 0.5技术上更正确.rand半开范围 [0,1]中返回结果,因此使用<导致半开范围[0,0.5]和[0.5,1]的相等几率.使用>会导致闭合范围[0,0.5]和开放范围(.5,1)的UNEQUAL几率.

  • 太棒了.样本方法产生(理论上)**50%**概率,但是使用此方法可以调整该概率.说,我想要获得真正价值的**70%**将是"兰德> 0.3" (4认同)
  • @JGonzalezD并使其更直接和可读:`rand <0.7`为**70%** (4认同)