我需要做一个符合某种结果概率的硬币翻转。例如,一个硬币翻转,有67%的机会出现Heads,有83%的机会出现Tails等等。
我设法通过在等效分布中填充100 true
和false
的数组,然后随机选择一个项目来获得我之后的结果。什么是更优雅的方式呢?
答案 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
理论上,这可以像阵列分布方法一样“精确”。