3

クライアントの要求を処理するための参照番号として使用できるように、一意の番号を生成したいと考えています。

数字を繰り返すことも、数字を保存するためにデータベースを使用することもありません。

シンプルなアルゴリズムを使用して乱数を生成したいだけです。

私は次のようなものを使用しています

rand(10*45, 100*98)

そのようなことをすることは可能ですか?私の要件はかなり奇妙に思えますが、それが可能かどうか知りたいだけです。

4

3 に答える 3

7

乱数の先頭に Unix タイムスタンプを付けてみませんか? これにより、一意性が保証されます。

$random = time() . rand(10*45, 100*98);

それ以外の場合は、数値をファイルに保存できます。可能であれば、それらをデータベースに保管してください。

于 2013-02-08T22:49:00.510 に答える
4

関数を使用しない理由は、php がその目的のために提供するものです。

ユニーク

例:

uniqid(rand(10*45), true)
于 2013-02-08T23:00:31.760 に答える
2

16 進数を受け入れる場合は、次のようになります。

function random_id($bytes) {
    $rand = mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM);
    return bin2hex($rand);
}
echo random_id(5); // Ex: a06e0e4e72

5 バイト (つまり 40 ビット) は、約 2^40 (約 1 兆) の可能な一意の値を作成します。多くの一意の ID を作成するには、十分にランダムである必要があります。

于 2013-02-08T23:19:08.413 に答える