2

私はランダムモジュールのドキュメントを読んでいて、疑似ランダムと言っていて、疑似はFalseを意味しないと思っていたので、それが何を意味するのか疑問に思っていました

例えば:

import random

print random.randint(1,2)
print random.randint(1,3)

これは、最初の print ステートメントが 1 を出力する確率が 50% で、2 を出力する確率が 50% であることを意味しますか?

2 番目の print ステートメントは 33% の確率で 1 を印刷し、33% の確率で 2 を印刷します。

そうでない場合、擬似乱数はどのように生成されますか?

4

1 に答える 1

8

真のランダム性を生成するには、放射性崩壊 (ランダム) やブラウン運動 (これも本質的にランダム) などのランダム イベントを測定する特殊なハードウェアが必要です。ほとんどのコンピューターには明らかにこれらがないため、代わりに、たとえば現在のタイムスタンプによって決定される数値で始まる、非常に複雑で、均等に分散された、予測が難しい「疑似乱数」アルゴリズムを使用する必要があります。このようなアルゴリズムは、同じタイムスタンプを持つ 2 つの乱数ジェネレーターをシードしないように注意している限り (たとえば、異なるスレッドで同時に開始するなど)、「ランダム性」を必要とする標準的なユース ケースには十分に適しています。それらは同じことをします。このような乱数ジェネレーターの一般的な例は、Mersenne Twister です: http://en.wikipedia.org/wiki/Mersenne_twister

真にランダムな値を提供し、ランダム性と疑似ランダム性について多くのことを説明し、そのランダム性に関するおいしい統計を提供しているサイト: http://www.random.org/ (詳細と統計を参照) (実際には、測定に依存しているようです)混沌としたシステムの小さな変動、たとえば大気ノイズなどですが、統計によると、それは真のランダム性に非常に似ているため、区別することはできません!)

于 2013-05-30T06:19:23.853 に答える