sql >> データベース >  >> RDS >> Mysql

MySQLでのRAND()の配布

    関数のソースコードをすばやく見つけることができませんでした。それを見ることはより良い答えを得るのを助けるかもしれません。そうは言っても、それは「いいえ。しかし、ちょっと近い」ように見えます。

    ドキュメントから、ランダムにしようとしていることがわかります(オプションでシードできます)。ただし、2つの注意点があります。これは、最初の問題がドキュメントにあると予想した場合に、常に均一であるとは限らないことを意味します。

    RAND() is not meant to be a perfect random generator. It is a fast way to generate random numbers on demand that is portable between platforms for the same MySQL version. 
    

    つまり、そのコードは真の乱数ジェネレーターであることに疑問があります-ほとんどの目的には十分ですが、たとえば暗号化での使用については信頼できません。期待どおりに均一です。

    完璧ではないという彼らの主張は、これらのテストの少なくともいくつかはほぼ確実に失敗することを意味します。方法はまだ不明ですが、完全なRNGでない場合、完全に均一な分布は表示されません。範囲のギャップまたはピークのいずれかが多かれ少なかれ一般的であると予想します。 http://www.stat.fsu.edu/pub/diehard/cdrom/pscript/monkey.ps (それ以来、他の作業がありましたが、これはRNGを検証する際の重要な作業の一部です。)

    その背後にあるコードが確かにしないことを賭けます 均一な分布を保証するようにしてください。そうすると(すでに発生したものの履歴を追跡する)、大量のメモリが浪費されるためです。いずれにせよ、完全なRNGを使用してすでに多くの値を生成している場合、これまでの値がすべて低かった場合、次の値が高くなることを保証するものはありません。常に同じようにランダムになります。




    1. pro * cとは何ですか?

    2. MySQL提供された静的なデータリストに対してテーブルを結合することは可能ですか?

    3. 更新トリガーを使用して別のテーブルを更新するにはどうすればよいですか?

    4. php、mysql-データベースへの接続が多すぎますエラー