最小値と最大値に基づいて乱数を生成する方法はありますか?
たとえば、最小値が1で最大値が20の場合、1から20までの任意の数を生成する必要がありますか?
最小値と最大値に基づいて乱数を生成する方法はありますか?
たとえば、最小値が1で最大値が20の場合、1から20までの任意の数を生成する必要がありますか?
random_int()
は、、、random_bytes()
またはを使用しますopenssl_random_pseudo_bytes()
。@Salvador Daliが言ったrand()
ように、暗号的に安全な結果は生成されません。ドキュメントを参照してくださいphp.net/manual/en/function.rand.php
回答:
<?php
$min=1;
$max=20;
echo rand($min,$max);
?>
新しいPHP7では、最終的に暗号的に安全な疑似乱数整数がサポートされます。
int random_int ( int $min , int $max )
random_int —暗号的に安全な疑似乱数整数を生成します
これは基本的に以前の回答を時代遅れにします。
random_int
ありrandom_bytes
ます--github.com/paragonie/random_compat。
random_int
か?それが「より良い」乱数を与えるなら、なぜ暗号以外の理由でそれを使用しないのですか?
random_int
のsをrand
sに変更しないほど重要ではありません。また、私のユースケースは再試行アルゴリズムであり、予測可能なランダムな整数のために、スリープ後に複数の失敗した関数が凝集することを絶対に望んでいません
速く速くバージョンはmt_rand使用します。
$min=1;
$max=20;
echo mt_rand($min,$max);
出典:http://www.php.net/manual/en/function.mt-rand.php。
注:これを機能させるには、サーバーでMathPHPモジュールを有効にする必要があります。そうでない場合は、ホストにバグを報告して有効にするか、通常の(そしてより遅い)rand()を使用する必要があります。
rand(1,20)
PHPのrand関数のドキュメントは次のとおりです。
http://php.net/manual/en/function.rand.php
このsrand()
関数を使用して、乱数ジェネレーターのシード値を設定します。
これを試してください。それはあなたの望みに応じてIDを生成します。
function id()
{
// add limit
$id_length = 20;
// add any character / digit
$alfa = "abcdefghijklmnopqrstuvwxyz1234567890";
$token = "";
for($i = 1; $i < $id_length; $i ++) {
// generate randomly within given character/digits
@$token .= $alfa[rand(1, strlen($alfa))];
}
return $token;
}