一定の結果確率に従うコイントスを行う必要があります。例えば、表が出る確率が67%、裏が出る確率が83%のコイン投げなど。
true
配列に100をfalse
入力し、同等の分布で、ランダムに1つのアイテムを選択することで、私が求めている結果を得ることができました。それを行うためのよりエレガントな方法は何ですか?
一定の結果確率に従うコイントスを行う必要があります。例えば、表が出る確率が67%、裏が出る確率が83%のコイン投げなど。
true
配列に100をfalse
入力し、同等の分布で、ランダムに1つのアイテムを選択することで、私が求めている結果を得ることができました。それを行うためのよりエレガントな方法は何ですか?
rand < 0.67
rand < 0.83
それぞれ 67% と 83% の確率で与えられます。これは、一様に選択された ( によって返されるような)true
乱数x
がセグメント に到達する可能性が 67% であるためです。0 <= x < 1
Kernel#rand
0 <= x < 0.67
Random#rand(max)
(およびKernel#rand(max)
):
max が整数 [1 以上] の場合、rand は 0 以上 max 未満のランダムな整数を返します。
そう:
p = rand(100)
return p < 83 # ie. true for heads
理論的には、これは配列分散方法のように「正確」になる可能性があります。