私はかなり単純な SQL (MySQL) を持っています:
SELECT foo FROM bar ORDER BY rank, RAND()
結果を更新すると、ランダム性が疑わしいほど弱いことに気付きました。
現時点でのサンプル データには、ランクが等しい (整数ゼロ) 6 つの結果があります。ランダム性には多くのテストがありますが、ここでは手動で行う簡単なテストを示します: 2 回実行すると、最初の結果は両方の実行で約 6 分の 1 の確率で同じになるはずです。これは確かに起こっていません。主要な結果は少なくとも 3 分の 1 の確率で同じです。
順列全体で均一な分布が必要です。私は専門家の統計学者ではありませんが、ORDER BY RAND()
これを達成する必要があると確信しています。私は何が欠けていますか?
MySQL ではSELECT rand(), rand()
2 つの異なる数値が表示されるため、「クエリごとに 1 回」という説明は受け入れません。