PHP が一意の乱数を生成する (比較的一意)

パラメーターなしで uniqid() メソッドを使用すると、このメソッドは単一のプロセスが同じミリ秒内で一意であることのみを保証できます。uniqid("", true) を使用する場合。エントロピー値を使用すると、生成された ID のランダム性を保証するランダムな方法が既に存在します。ただし、線形合同は乱数を生成するための比較的単純なアルゴリズムであるため、ランダム性が十分でない可能性があります. したがって、インターネット上で出回っているよりランダムな数値方法は次のとおりです。

uniqid(mt_rand(), 真)

その中で、mt_rand() は線形合同法を使用して乱数を生成するのではなく、Mersenne Twister Random Number Generator (メルセンヌ回転アルゴリズム) を使用して乱数を生成します。つまり、上記の ID は 2 つのランダム アルゴリズム + タイムスタンプによって生成されます。基本的に、このアルゴリズムは一意性をかなり保証することができます(衝突率についてお聞きしたいのであれば、数学の学生だけが研究できると推定されています...)。

上記の ID にはドットが含まれ、長さは 128 ビットではありません。uuid を生成する場合はハッシュが必要で、md5 か sha1 かを選択できます。そのため、インターネット上で一意のコードを生成する別の方法があります。

md5(uniqid(mt_rand(), true))

おすすめ

転載: blog.csdn.net/lhkuxia/article/details/128692849