• ベストアンサー

乱数

・1~50の乱数を昇順で6個表示。しかし各数字には表示させる確率を設定してあります。 単純に乱数を昇順で6個表示させることは出来ますが、確率を元に表示させる方法がわかりません。 ご教授おねがいします。 環境 php + Mysql

  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8525/19377)
回答No.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回やって、ソートするだけです。

関連するQ&A

  • 乱数とは?

    乱数について、いくつか疑問に思っていることがあります。 乱数の定義は? 辞書には、 0から9までの一〇種類の数字が、それぞれ同じ確率で現れるように並べられた数字の列。 と、書いてあります。 と言うことは、各数字の現れる確率は10%です。 大量にDATAを取れば限りなく10%に近づくと言うことです。 そこで、 DATAが少ないと乱数にも偏った値が出て各数字10%にはなりません。 と言うことは、 各数字の発生確率が偏っている段階では、 次に現れる数字の予測がある程度可能だと思っていいのでしょうか? 確率の低い数字が出る確率が高い? そうなると、 予測が可能だと乱数とは言えないのではないでしょうか? 結果として確率が均等になればいいのであって、予測が出来る出来ないは関係ない?

  • 乱数での確率

    乱数に確率をつけることはできるでしょうか? たとえば配列にA、B、Cの3つの要素を収めておいて、  Aが出る確率=50%  Bが出る確率=30%  Cが出る確率=10% といったように確率を設定してランダム表示させたいのですが。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 乱数

    乱数を発生させる際に Sub Sample() Debug.Print Int((10 - 1 + 1) * Rnd + 1) End Sub で、1から10までの乱数を発生できますが、 1から10と言う連続した数字ではなく、 例えば10,13,18,43・・・ という規則性のない複数の数字からランダムに数字を発生させるにはどうすればいいでしょうか? 10,13,18,43の中から10を返したり、18を返したりする方法を教えてください。

  • 乱数とファイルの入出力の質問です。

    課題で「100個の乱数を発生させファイルに保存し、そのファイルを読み込み、昇順に並べ替えするプログラムを作れ」という課題がありました。 乱数を発生させるのと、昇順に並び替える方法はわかるのですが、二つをうまく組み合わせる方法がわかりません。 ポインタを使ってファイルの入出力をするプログラムを教えてくださる方がいたら連絡ください。 出来れば模範のプログラムを掲示していただけるとうれしいです。

  • 乱数を扱いたい

    Active Basicでプログラムの練習をしています。 今回、乱数を扱いたいのですが、どうしても分かりません。 例えば、1~100までの整数を用意して、その中から数字をランダムで1つ取り出すっと言ったことをしたいのですが・・・・ ((例:58 など)) Rnd( )と言う関数があるようなのですが、いまいち使い方がよく分かりません。 他の関数を使用するのかも分かりません。 すみませんが、どなたか知っていましたら、ご教授願います。

  • ActionScript3で乱数を取得しなおかつ隣とかぶらない

    ActionScript3で乱数を取得しなおかつ隣とかぶらない 質問ですActionScript3で乱数を取得しなおかつ隣とかぶらないソースをコーディングしているのですが、うまいやり方が見つからず困っています。 いまサンプルとして以下の画像のように2つのテキストエリアとボタンを置いてあります。 それぞれボタンを押すとボタン1ならテキスト1に1~10の数字がランダムにしかも前回と同じ数字がでないように表示されます。ここまでならできるのですが問題は例えばテキスト1に3がでていたらテキスト2には3以外でなおかつ前回と同じ数字がでないようにしたいのです。 何か良い方法はないでようか? ■制作環境:ActionScript3 Flash CS4

    • ベストアンサー
    • Flash
  • 乱数の発生方法

    こんにちは! いつも大変参考にさせていただいております。 どうか教えていただきたい事があります。 数学は大の苦手で、学生時代からほとんど勉強してこなかっただけに、 数学の本を読んでも、今回の問題とどのように関係しているのかがわからず、お手上げ状態です。 実行したいのは、確率により乱数を発生させたいです。 たとえば、0から2の乱数を発生させるにあたり、 0の発生は50%、 1の発生は25%、 2の発生は25%、 というように、発生する確率を設定したいと思っています。 確率の本を読んでみたのですが、入門書には確率の求め方は載っていたのですが、それをどのように利用したらいいのかわかりません。 このような乱数の発生のさせかたは可能でしょうか? また、どのようにしたらいいのでしょうか? 教えてください。。。

  • 乱数と配列

    0から99までの整数の乱数を1000個発生させ,各整数の確率(出現確率=出現回数/1000)を計算し、エントロピーを求め表示するプログラムを作成したいのですが、どういったソースコードになるのか教えていただけませんか。

  • 乱数表の定義が理解できません

    乱数表は0から9までの数字をランダムに並べた表。どの部分をとっても0~9の数字が同じ確率(1/10)で現れるように作られる。任意抽出その他標本調査や実験計画法に応用される。 と、ありますが、この確立1/10を、どう理解したら良いのでしょうか。 例えば、啓林館の乱数表で、 28 30 95 01 10 05 04 05 84 28 と、並んでいますが、一番左の数字は0が4/10出てますし, 二桁数字を考えても、05が2回出ているので、1/10にならないと思うのです。 どの部分をとっても1/10では無いと思うのですが、教科書が間違っているはずも無いですから、私の考え方がおかしいのだと思います。 どうぞ、お知恵をおかしください。

  • エクセル 任意の数字から始まる重複しない乱数

    お世話になります。 エクセル2003/XP 使用です。 RANK関数またはそれに似た利用方法でご教授願いします。 下記ページを参考に、"重複しない乱数”を作成しました。 http://www.relief.jp/itnote/archives/001798.php (ページ中程、▼操作手順:重複しない乱数を作成する 以下の部分) 乱数の最初の数字が1から始まる分には問題なくできるのですが、 乱数の数字を、「任意の数字から始めて」、 「任意の数字で終わる」ようにすることは可能でしょうか? 例えば、下記の例でいうと、 6から始まり10で終わる乱数です。        A列     B列 1行目 / =RAND() / 1-5の範囲でランダムな重複しない乱数 2行目 / =RAND() / 同上 3行目 / =RAND() / 同上 4行目 / =RAND() / 同上 5行目 / =RAND() / 同上 ------------------------------------------------------------ 6行目 / =RAND() / 6-10の範囲でランダムな重複しない乱数 7行目 / =RAND() / 同上 8行目 / =RAND() / 同上 9行目 / =RAND() / 同上 10行目 / =RAND() /同上 (11以下、繰り返し 略) よろしくお願いします。