重複を最小限に抑えたランダムな 5 文字の生成
重複を最小限に抑えたランダムな 5 文字の文字列を作成するには、最も効果的なアプローチの 1 つが次の方法を利用します。 PHP の機能と巧妙なテクニックを組み合わせたものです。解決策を詳しく見てみましょう:
md5 と rand の使用
<code class="php">$rand = substr(md5(microtime()),rand(0,26),5);</code>
この方法では、md5 ハッシュ関数を使用してタイムスタンプから 32 文字の文字列を生成します。 substr と rand を使用すると、ランダムな 5 文字のサブセクションが抽出され、重複確率の低い文字列が得られます。
shuffle と array_rand の使用
<code class="php">$seed = str_split('abcdefghijklmnopqrstuvwxyz' .'ABCDEFGHIJKLMNOPQRSTUVWXYZ' .'0123456789!@#$%^&*()'); // and any other characters shuffle($seed); // probably optional since array_is randomized; this may be redundant $rand = ''; foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];</code>
こちら、事前定義された文字セット ($seed) がランダムにシャッフルされます。次に、array_rand を使用して、シャッフルされた配列から 5 つの文字がランダムに選択され、文字の多様な分散が保証されます。
インクリメンタル ハッシュを使用します
<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 サイトの他の関連記事を参照してください。