• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:確率の問題)

コンピュータの乱数で同じ数値が出る確率について知りたい

このQ&Aのポイント
  • コンピュータで乱数を使っていると同じ数値がよく出る現象について心配しています。
  • 1000個の数値から1個を無作為に取った場合の以下の確率を知りたいです:1)同じ数値が二連続出る確率、 2)N連続する確率、3)P回試行して同じ数値が1回でも出る確率、4)X個の固有の数値でP回試行して同じ数値が1回でも出る確率。
  • 上記の問題の解法や、天才レベルでどのくらいの時間で解くことが可能かについて教えてください。

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

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.4

3),4)の式が微妙に違っていたので修正。 正しくは、 3) 1 - 999! / {(1000-P)! * 1000^(P-1)} 4) 1 - (X-1)! / {(X-P)! * X^(P-1)} でした。 この式から、例えば、1000個の数値で50回だとすると、同じ数値が1回でも出る確率は、0.712269 となります。

その他の回答 (3)

  • ltx78
  • ベストアンサー率45% (10/22)
回答No.3

まず、コンピュータで扱う「乱数」は、正確には乱数ではありません。 ある一定の法則にしたがって順に計算され、 かつ数値の出現する順序がある程度ランダムに見えるものを 「乱数」と呼んでいるだけです。 どのような乱数を用いているのでしょうか? C言語のrand()関数などは、かなり「質が悪い」乱数生成関数であることが知られており、 「数列に特定のパターンが頻出する」ことがしばしば起こります。 もしくは、乱数生成関数を初期化する際に与える「種」に 毎回同じものを使っているために同じ乱数列が生成される、ということも考えられます。 この場合の手っ取り早い解決法としては、 現在時刻、もしくはそれを変換したものを関数の初期化に用いる、という方法があります。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.2

ちなみに、よく知られている問題として、 40人のクラスに同じ誕生日の人がいる確率 = 1 - 364*363*…*326 / (365)^39 = 0.891 で多くの人の直感よりもかなり多い、 ていうのがあります。 3),4)はこれですね。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

1) 1/1000 2) (1/1000)^(N-1) 3) 1 - 999! / {(1001-P)! * 1000^(P-1)} 4) 1 - (X-1)! / {(X-P+1)! * X^(P-1)} 天才じゃなくても高校2年の授業で習う。

関連するQ&A