- ベストアンサー
乱数
・1~50の乱数を昇順で6個表示。しかし各数字には表示させる確率を設定してあります。 単純に乱数を昇順で6個表示させることは出来ますが、確率を元に表示させる方法がわかりません。 ご教授おねがいします。 環境 php + Mysql
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「求める数値を乱数で出すのではなく、確率を乱数で出す」ようにしましょう。 単純に「3%の確率でアタリ、97%の確率でハズレを表示するプログラム」を考えてみます。 多分「0~99の乱数を作って、0、1、2ならアタリ、3~99ならハズレ」と書くでしょう。 これは「1(アタリ)、2(ハズレ)を昇順で1個表示。しかし各数字(アタリは3%、ハズレは97%)には表示させる確率を設定してあります」って問題を解くのと同じ。 これを応用して 1(アタリ)、2(ハズレ)を⇒1~50の数値を 1個表示⇒6個表示 に書き替えれば良いだけです。 上記「1と2の乱数を昇順で1個表示。しかし各数字には表示させる確率を設定してあります」 と、質問文の >・1~50の乱数を昇順で6個表示。しかし各数字には表示させる確率を設定してあります。 を比べてみて下さい。やってる事は同じですよね。数値の種類数と個数が違うだけで。 具体的には、もし、確率が0.1%刻みなら、フィールドが2つある「確率表」のテーブルを作り、1つ目のフィールドに0~999の主キー付きの連番を、2つ目のフィールドに1~50の数値を確率に合わせてバラバラにセットしておき、0~999の乱数を出して、確率表の1つ目のフィールドをキーにして検索すれば、2つ目のフィールドに求める答えの1~50が出て来ます。 あとは、それを6回やって、ソートするだけです。