如何在Ruby中编写不公平或有偏见的硬币翻转?

时间:2016-02-01 01:14:23

标签: ruby probability coin-flipping

我需要做一个符合某种结果概率的硬币翻转。例如,一个硬币翻转,有67%的机会出现Heads,有83%的机会出现Tails等等。

我设法通过在等效分布中填充100 truefalse的数组,然后随机选择一个项目来获得我之后的结果。什么是更优雅的方式呢?

2 个答案:

答案 0 :(得分:5)

rand < 0.67
rand < 0.83

true的概率分别为67%和83% - 因为统一选择的x随机数0 <= x < 1(例如由Kernel#rand返回)将有67%的人登陆0 <= x < 0.67段。

答案 1 :(得分:3)

Random#rand(max)(和Kernel#rand(max)):

  

当max为整数[大于或等于1]时,rand返回一个大于或等于零且小于最大值的随机整数。

所以:

p = rand(100)
return p < 83  # ie. true for heads

理论上,这可以像阵列分布方法一样“精确”。