63

重複の可能性:
php のランダム フロート

0 から 1.0 までのランダムな浮動小数点数 (0.4、0.8 など) を作成することは可能ですか? rand を使用しましたが、整数のみを受け入れます。

4

7 に答える 7

116
mt_rand() / mt_getrandmax();

rand()通常、プラットフォームのC実装に依存し、通常はrand()非常に単純なパターンで数値を作成するため、この関数は避けてください。php.netでこのコメントを参照してください

更新:php 7.1では、rand()が変更され、単なるエイリアスになりmt_rand()ました。したがってrand()、これでも使用できます。

于 2013-01-04T10:51:40.390 に答える
37

単純に 10 で割るとどうなるでしょうか。

$randomFloat = rand(0, 10) / 10;
var_dump($randomFloat);

//eg. float(0.7)
于 2013-01-04T10:46:35.343 に答える
12
$v = mt_rand() / mt_getrandmax();

それをします。


(質問の例のように)小数点以下1桁だけが必要な場合は、round()取得する値だけ...

$v = round( $v, 1 );

...または 0 から 10 までの数値を計算し、10 で割ります。

$v = mt_rand( 0, 10 ) / 10;
于 2013-01-04T10:47:23.153 に答える
2

Try this

// Generates and prints 100 random number between 0.0 and 1.0 
$max = 1.0;
$min = 0.0;
for ($i = 0; $i < 100; ++$i)
{
    print ("<br>");
    $range = $max - $min;
    $num = $min + $range * (mt_rand() / mt_getrandmax());    
    $num = round($num, 2);
    print ((float) $num);
}
于 2013-01-17T06:09:47.793 に答える
1

float *にキャストし、 で除算しgetrandmax()ます。


* PHP の任意の型ジャグリング ルールでは、キャストは不要のようです。ただし、それは他の言語になります。

于 2013-01-04T10:45:19.330 に答える