web-dev-qa-db-ja.com

PHPを使用した範囲[最小-最大]の乱数

最小値と最大値に基づいて乱数を生成する方法はありますか?

たとえば、minが1でmax 20の場合、1〜20を含む1〜20の任意の数を生成する必要がありますか?

78
Val
<?php
  $min=1;
  $max=20;
  echo Rand($min,$max);
?>
132
Prisoner

新しい PHP7 では、最終的に 暗号的に安全な擬似乱数整数 のサポートがあります。

int random_int ( int $min , int $max )

random_int —暗号的に安全な擬似乱数整数を生成します

基本的に、以前の回答は廃止されます。

29
Salvador Dali

早く より高速なバージョンではmt_Randを使用します。

$min=1;
$max=20;
echo mt_Rand($min,$max);

ソース: http://www.php.net/manual/en/function.mt-Rand.php

注:これを機能させるには、サーバーでMath PHPモジュールを有効にする必要があります。そうでない場合は、ホストをバグして有効にするか、通常の(そしてより遅い)Rand()を使用する必要があります。

17
Matt Cromwell
(Rand() % ($max-$min)) + $min

または

Rand ( $min , $max )

http://php.net/manual/en/function.Rand.php

5
pinkfloydx33

ここに答えをまとめて、バージョンに依存しないようにしました。

function generateRandom($min = 1, $max = 20) {
    if (function_exists('random_int')):
        return random_int($min, $max); // more secure
    elseif (function_exists('mt_Rand')):
        return mt_Rand($min, $max); // faster
    endif;
    return Rand($min, $max); // old
}
4
vonUbisch
Rand(1,20)

PHPのRand関数のドキュメントは次のとおりです。

http://php.net/manual/en/function.Rand.php

srand()関数を使用して、乱数ジェネレーターのシード値を設定します。

4
winwaed

これを試してください。希望に応じて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;
}
0
asi_x