重み付き抽選機能を実装したいと思っております。
1つを取り出す場合は、調べたら色々やり方が出てくるのですが、今回やりたいのは重みづけに従って複数を同時に取り出したい場合です。
さらにもう一つ縛りがあって、重みづけを表す割合(確率)は、整数ではなく0~1の間の小数で定義されております。
例えば以下のような連想配列(キーに対する値がその割合を示す)があったとして、これから3つを取り出す場合はどのようなプログラムになりますでしょうか?
(もちろんこの場合'5'が選ばれる確率が一番高いことになります。)
php
1$a = array( 2 '1' => 0.1, 3 '2' => 0.3, 4 '3' => 0.1, 5 '4' => 0.1, 6 '5' => 0.4 7);
できればPHPでコードを示していただくのが一番嬉しいですが、ロジックがわかりやすければ何でも大丈夫です。
すみませんが、どなたかご教示の程、何卒よろしくお願い致します。
ちなみに1つの場合は以下のサイトを参考にしました。
http://lab.sonicmoov.com/development/gacha-logic/
http://pro-tyablog.blogspot.jp/2013/10/php.html
http://d.hatena.ne.jp/moroto1122/20100108/1262936688
0~1の乱数生成はこちらを参考にしました。
http://webkaru.net/php/function-mt-getrandmax/
回答2件
あなたの回答
tips
プレビュー