プログラムのアルゴリズムで質問です。

よく、ゲームとかで

90%で2位の可能性と、80%で3位の可能性などと
合計が100%オーバーしている場合がありますが
この場合の抽選は、どの様に行えば良いのでしょうか?

現状は、ランダム値が80%以上を出した場合は、2位と3位のどちらかを
1/2で抽選するようにしてますが
他に方法ってありますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/12/12 18:57:20
  • 終了:2009/12/19 19:00:02

回答(2件)

id:azuco1975 No.1

azuco1975回答回数613ベストアンサー獲得回数162009/12/12 19:38:42

ポイント35pt

90/(90+80)-2位の確率

80/(90+80)-3位の確率

http://q.hatena.ne.jp/answer

id:ana_log No.2

ana_log回答回数114ベストアンサー獲得回数222009/12/12 19:56:03

ポイント35pt

今行っている処理

80%の値が出たら50%の確率で2位となるので

8/10*1/2=8/20

80%の値が出たら50%の確率で3位となるので

8/10*1/2=8/20

残りの20%の値が出たらはずれ?となるので

2/10

この割合でいいのですか?

それなら単純に0~3→2位、4~7→3位、8,9→はずれにしたらよいのでは


割合として100%を超えているので思ったような動作にはならないかもしれませんが

if(乱数 <= 90) {

2位

} else if(乱数2 <= 80) {

3位

} else {

はずれ

}

Cもどき

と上位確率からはじいていくか、100%の割合に変換するかでしょうか

上位確率からはじくとはずれ率が極端に低くなりますが「90%で2位なのになんでこんなに出ないの」となりますのでこちらのほうが正しい気がします

確率的には

90/100→2位

8/100→3位

2/100→はずれ

になります

これを乱数の閾値にします


ちなみに「90%で2位の可能性と、80%で3位の可能性~」なんて判定は見たことがありません

厳密にいえばまだほかに条件があるはずです

たとえば「90%で2位の可能性、はずれても80%で3位の可能性」のような

そもそも観測可能確率が100%を超えるなんておかしいですから

http://q.hatena.ne.jp/answer

  • id:kuro-yo
    うーん、これって、「90%で2位以下、80%で3位以下」とかって事だったんじゃないかなぁ
    (訂正連投失敬)

この質問への反応(ブックマークコメント)

トラックバック

  • こちらはアルゴリズムの話ではないのでは…? 根本的に確率論というものを理解されていない様な気がするのです。
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません