ホームページ > バックエンド開発 > PHPの問題 > PHPでランダム性を実装する関数は何ですか?

PHPでランダム性を実装する関数は何ですか?

青灯夜游
リリース: 2023-03-13 07:34:01
オリジナル
7031 人が閲覧しました

ランダム性を実装する php 関数は次のとおりです: 1. rand() (ランダムな整数を生成できます); 2. mt_rand(); 3. array_rand() (配列内のランダムなキー名を返すことができます); 4. shuffle()、配列をランダムにシャッフルできます; 5. str_shuffle(); 6. uniqid()。

PHPでランダム性を実装する関数は何ですか?

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP のランダム関数には主に rand、mt_rand が含まれます、 array_rand のほか、ランダムに「配置」された (シャッフルされた) 関数 shuffle および str_shuffle もあり、これらは一意の ID を持つ uniqid を生成できます。

1. rand は乱数を生成します

<?php
$base = &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#39;;
$count = strlen($base);
$random = &#39;&#39;;
for ($i=0; $i < 16; $i++) { 
 $random.=$base[rand(0,$count-1)];
}
echo $random;
?>
ログイン後にコピー

rand() 関数は libc の乱数生成器を使用して乱数を生成します。一般に遅くて不確実です。代わりに mt_rand 関数を使用することをお勧めします。

getrandmax() 関数は、rand 関数が生成できる最大の乱数を返すことができるため (私のシステムは 32767)、rand 関数の 2 番目のパラメーターを設定するときは、getrandmax の戻り値を超えないようにしてください。

2. mt_rand は乱数を生成します

<?php
$base = &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#39;;
$count = strlen($base);
$random = &#39;&#39;;
for ($i=0; $i < 16; $i++) { 
 $random.=$base[mt_rand(0,$count-1)];
}
echo $random;
?>
ログイン後にコピー

古い libc 乱数ジェネレーターの多くは、不確実で未知の特性を備えており、非常に遅いです。 PHP の rand() 関数は、デフォルトで libc 乱数ジェネレーターを使用します。 mt_rand() 関数は非公式にこれを置き換えるために使用されます。この関数は、乱数生成器として » Mersenne Twister の既知の機能を使用しており、libc が提供する rand() よりも平均して 4 倍高速に乱数値を生成できます。開発中は rand の代わりに mt_rand 関数を使用することを強くお勧めします。

オプションのパラメータ min と max が指定されていない場合、mt_rand() は 0 から mt_getrandmax() までの擬似乱数を返します。たとえば、3 ~ 20 (両端を含む) の範囲の乱数が必要な場合は、mt_rand(3, 20) を使用します。

3. array_rand 関数

<?php
$base = array(&#39;a&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;,&#39;e&#39;,&#39;f&#39;,&#39;g&#39;,&#39;h&#39;,&#39;i&#39;,&#39;j&#39;,&#39;k&#39;,&#39;l&#39;,&#39;m&#39;,&#39;n&#39;,&#39;o&#39;,&#39;p&#39;,&#39;q&#39;,&#39;r&#39;,&#39;s&#39;,&#39;t&#39;,&#39;u&#39;,&#39;v&#39;,&#39;w&#39;,&#39;x&#39;,&#39;y&#39;,&#39;z&#39;,&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;,&#39;H&#39;,&#39;I&#39;,&#39;J&#39;,&#39;K&#39;,&#39;L&#39;,&#39;M&#39;,&#39;N&#39;,&#39;O&#39;,&#39;P&#39;,&#39;Q&#39;,&#39;R&#39;,&#39;S&#39;,&#39;T&#39;,&#39;U&#39;,&#39;V&#39;,&#39;W&#39;,&#39;X&#39;,&#39;Y&#39;,&#39;Z&#39;,&#39;0&#39;,&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;,&#39;6&#39;,&#39;7&#39;,&#39;8&#39;,&#39;9&#39;);
$random = &#39;&#39;;
for ($i=0; $i < 16; $i++) { 
 $random.=$base[array_rand($base)];
}
echo $random;
?>
ログイン後にコピー

array_rand は配列内のランダムなキー値を返しますが、これは mt_rand() 関数に似ています。柔軟に使えます。

4. shuffle 関数

<?php
$base = array(&#39;a&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;,&#39;e&#39;,&#39;f&#39;,&#39;g&#39;,&#39;h&#39;,&#39;i&#39;,&#39;j&#39;,&#39;k&#39;,&#39;l&#39;,&#39;m&#39;,&#39;n&#39;,&#39;o&#39;,&#39;p&#39;,&#39;q&#39;,&#39;r&#39;,&#39;s&#39;,&#39;t&#39;,&#39;u&#39;,&#39;v&#39;,&#39;w&#39;,&#39;x&#39;,&#39;y&#39;,&#39;z&#39;,&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;,&#39;E&#39;,&#39;F&#39;,&#39;G&#39;,&#39;H&#39;,&#39;I&#39;,&#39;J&#39;,&#39;K&#39;,&#39;L&#39;,&#39;M&#39;,&#39;N&#39;,&#39;O&#39;,&#39;P&#39;,&#39;Q&#39;,&#39;R&#39;,&#39;S&#39;,&#39;T&#39;,&#39;U&#39;,&#39;V&#39;,&#39;W&#39;,&#39;X&#39;,&#39;Y&#39;,&#39;Z&#39;,&#39;0&#39;,&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;,&#39;6&#39;,&#39;7&#39;,&#39;8&#39;,&#39;9&#39;);
if(shuffle($base)){
 print_r($base);
}
?>
ログイン後にコピー

shuffle 関数は、配列の順序を少しランダムに崩す関数で、ここではランダム関数の中に入れています。戻り値は bool 値で、元の変数を直接参照するのと同じです。

5. str_shuffle 関数

<?php
$base = &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#39;;
echo str_shuffle($base);
?>
ログイン後にコピー

ここでの str_shuffle の関数は shuffle の関数と似ています。唯一の違いは戻り値です。str_shuffle の元の文字列は残ります。変わらない。

6. uniqid 関数

<?php
echo uniqid();
//54f806528172f
?>
ログイン後にコピー

uniqid は一意の文字列を生成でき、このアプリケーションの適用範囲は非常に広い可能性があります

推奨学習: " PHP ビデオ チュートリアル>>

以上がPHPでランダム性を実装する関数は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート