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

ランダムな数を生成するためのアルゴリズム

    いいえ、アルゴリズムはスケーラブルではありません。私が以前に行ったことは、番号を連続して発行し(毎回+1)、XOR演算を通過させてビットを混乱させ、一見ランダムな番号を取得することです。もちろん、それらは実際にはランダムではありませんが、ユーザーの目にはそう見えます。

    [編集] 追加情報

    このアルゴリズムのロジックは次のようになります。既知のシーケンスを使用して一意の番号を生成し、決定論的にそれらを操作するため、シリアルに見えなくなります。一般的な解決策は、暗号化の形式を使用することです。これは、私の場合はXORフリップフロップでした。これは、可能な限り高速であり、数値が衝突しないという保証を満たしているためです。

    ただし、速度よりもさらにランダムに見える数値が必要な場合は、他の形式の暗号化を使用できます(一度にmanyidを生成する必要がない場合など)。ここで、暗号化アルゴリズムを選択する際の重要なポイントは、「数値が衝突しないことを保証する」ことです。そして、暗号化アルゴリズムがこの保証を満たすことができるかどうかを証明する方法は、元の数と暗号化の結果の両方が同じビット数であり、アルゴリズムが可逆的(全単射)であるかどうかを確認することです。

    [ Adam Lissに感謝します & CesarB ソリューションを拡張するために]



    1. オラクル。日付と時刻を出力する方法は?

    2. オンプレミスとSaaS:データベース監視システムアーキテクチャ

    3. データ管理システムの利点は何ですか?

    4. MySQLでテーブルを作成する方法