5

間にある乱数を取得する必要があります

0 - 80

120 - 200

できます

$n1 = rand(0, 80);
$n2 = rand(120, 200);

しかし、私はとの間で選択する必要がありn1ますn2。できません

 $n3 = rand($n1, $n2)

80 - 120これは私が避ける必要がある数を私に与えるかもしれないので。

これを解決する方法は?

4

4 に答える 4

8

両方の範囲のサイズが異なるため(1つの数値だけであっても)、ランダムな広がりを確保するには、次のようにする必要があります。

$random = rand( 0, 200 - 39 );
if ($random>=120-39) $random+=39;

最速の方法。:)

これが機能する方法は、それが単一の範囲であると偽って、最初の範囲より上の数値を選択することになった場合、2番目の範囲内に収まるようにそれを増やします。これにより、完全な広がりが保証されます。

于 2012-04-22T22:01:51.200 に答える
5

両方の範囲のサイズが同じであるため、どちらの範囲を使用するかを簡単に決定できrand(0, 1)ます。

$n = rand(0, 1) ? rand(0, 80) : rand(120, 200);
于 2012-04-22T22:00:08.583 に答える
1

PHPには、範囲と呼ばれるこのための新しい関数があります。非常に使いやすく、PHPマニュアルに記載されています。

範囲を取得するための最小/最大数を入力できます。

<?php
echo range(0, 1000);
?

ただし、技術的には、番号範囲として機能する独自の2つの番号を入力することもできます。

于 2012-04-23T01:16:50.963 に答える
1

2つの乱数$n1$n2を取得します

$ n1 = rand(0、80);
$ n2 = rand(120、200);

$n3という新しい配列を定義します

$ n3 = array();

$n1$n2を配列に追加します$ n3array_push()関数を使用します

array_push($ n3、$ n1、$ n2);

array_rand()関数を使用して、配列$n3からランダムインデックス$find_indexを検索します。

$ find_index = array_rand($ n3,1);

結果を表示する

エコー$n3[$ find_index];
于 2013-07-21T12:19:43.687 に答える