より多くのエントロピーを使用せずに、 uniqid
基本的に次のことを行います( のソースを参照) uniqid.c
):
$time = explode(' ', microtime(false));
return sprintf('%s%08x%05x', $prefix, $time[1], $time[0] * 1000000);
したがって、基本的に現在の時刻をマイクロ秒単位で取得し、それらを16進表現に変換して、プレフィックスに追加します。これはすでに一意の値を提供します。
しかし、値は完全にランダムではありません。よりランダムな値を取得するには、2番目のパラメーター more_entropy を設定して、エントロピーを追加する必要があります。 。その場合、PHPの内部線形合同法
php_combined_lcg
( lgc.c<のソースを参照してください。 / em>
)は、最後に付加される疑似乱数を生成するために使用され、約30ビットの追加エントロピーを追加して、それらをよりランダムにします。