MySQL
Aurora

Aurora(MySQL互換)のrand()の性能を調べてみた

16万+無視できる程度に少ない件数のテーブルから、以下のSQLで10回抽出してみます。

SELECT * FROM HOGE WHERE rand() < 0.0001

16を中心とする二項分布に近い分布になるはずですが、どうでしょうか?10回試してみます。

12,19,15,12,22,18,12,17,12,14

うーん、12が4回出てますね!
12以下が出る累積確率が、0.1931083159らしいので、12以下が4回以上出る確率は0.1090497706ぐらいみたいです。

もう1回やってみましょう。

12,14,17,23,20,9,12,11,18,19

すごいあたりを引いている!
…とも思えないですし、12がやたら多いですね。

もう十回ほど試してみたら、9の他、7とか10とかも出るので、ちょっとばらつきやすいような気がします…なんでだろう
もし詳しい方がいたら、教えてください!