ホームページ  >  記事  >  バックエンド開発  >  PHP データが自動的にインクリメントされるときに生成される乱数は繰り返されません。

PHP データが自動的にインクリメントされるときに生成される乱数は繰り返されません。

巴扎黑
巴扎黑オリジナル
2017-08-22 17:47:311757ブラウズ

この記事では主に、PHP を使用して自動インクリメント データに基づいて非繰り返しの乱数を生成する方法を紹介します。この記事には、参考と学習のための詳細なサンプル コードが記載されています。必要な方はフォローしてください。一緒に見てください。

この記事では主に、自動インクリメントデータに基づいて非反復乱数を生成するための PHP の関連内容を紹介します。これは、すべての人の参照と学習のために共有されます。以下のコードに直接アクセスすることは役に立ちません。ポイントは、生成される自動インクリメントデータの桁数を制御することです

桁数は 2 か所で制御されます

1. $base 基本配列が 8 桁の場合、この配列は 8 桁でなければなりません。

2. $i は自動インクリメント番号であり、自動インクリメント番号は 8 桁を超えることはできません

現在の簡易分析の結果は上記です。グローバルに非重複化したい場合はuuid等を使用することを推奨します。

サンプルコード:


function swap($n,$base) {
$mask = 19; //1 + 2 + 16
 $n = intval($n, 10);
 $idx = $n & $mask;//取出标志位
 $xor = $base[$idx] ^ $n;//根据标识为找到对应的base,异或n
 
 return (($xor | $mask) ^ $mask) | $idx;//覆盖标识位
}
$newArray=[];
$base = array (
 0 => 1918407,
 1 => 5529570,
 2 => 6527234,
 3 => 6550962,
 4 => 8054672,
 5 => 3141234,
 6 => 2125630,
 7 => 6978033,
 8 => 4623630,
 9 => 4736420,
 10 => 7767295,
 11 => 9679880,
 12 => 1665600,
 13 => 6044373,
 14 => 4661383,
 15 => 5771843,
 16 => 2206123,
 17 => 5685396,
 18 => 5571647,
 19 => 7178311,
);
for ($i=0;$i<1000000;$i++) {
 $newArray[]= swap($i,$base)."\r\n";
}

以上がPHP データが自動的にインクリメントされるときに生成される乱数は繰り返されません。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。