ホームページ  >  記事  >  バックエンド開発  >  重複を最小限に抑えてランダムな 5 文字の文字列を生成するにはどうすればよいですか?

重複を最小限に抑えてランダムな 5 文字の文字列を生成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-19 15:32:02766ブラウズ

How to Generate Random 5-Character Strings with Minimal Duplication?

重複を最小限に抑えたランダムな 5 文字の文字列の生成

質問: 正確な文字列を効率的に生成するにはどうすればよいですか?重複する可能性が最も低い 5 つのランダムな文字?

答え:

方法 1:

<code class="php">$rand = substr(md5(microtime()), rand(0, 26), 5);</code>
  • このメソッドは、現在のマイクロタイムの MD5 ハッシュを使用して大きな乱数を生成し、ランダムな位置から 5 文字を抽出します。

メソッド 2:

<code class="php">$seed = str_split('abcdefghijklmnopqrstuvwxyz' . 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . '0123456789!@#$%^&*()');
shuffle($seed);
$rand = '';
foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];</code>
  • このメソッドは、すべての可能な文字の配列をシャッフルし、ランダムに 5 つの文字を選択します。大きな文字セットの場合は効率が低くなります。

メソッド 3:

<code class="php">function incrementalHash($len = 5) {
  $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  $base = strlen($charset);
  $result = '';

  $now = explode(' ', microtime())[1];
  while ($now >= $base) {
    $i = (int)$now % $base;
    $result = $charset[$i] . $result;
    $now /= $base;
  }
  return substr(str_repeat($charset[0], $len) . $result, -$len);
}</code>
  • このメソッドは、現在のマイクロタイムを増分ハッシュ値に変換します。ランダム性は低くなりますが、一意性は重要だが予測可能性はそれほど重要ではない場合に適しています。

注: 高セキュリティ アプリケーションの場合は、より堅牢なアプリケーションを使用することをお勧めします。乱数生成器。

以上が重複を最小限に抑えてランダムな 5 文字の文字列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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