我需要得到一個隨機數是如何從2個不同的數字範圍中選擇1個隨機數?
和 之間0 - 80
120 - 200
我可以做
$n1 = rand(0, 80);
$n2 = rand(120, 200);
但後來我需要n1
和n2
之間做出選擇。不能做
$n3 = rand($n1, $n2)
因爲這可能會給我一個號碼80 - 120
之間,我需要避免。
如何解決這個問題?
我需要得到一個隨機數是如何從2個不同的數字範圍中選擇1個隨機數?
和 之間0 - 80
120 - 200
我可以做
$n1 = rand(0, 80);
$n2 = rand(120, 200);
但後來我需要n1
和n2
之間做出選擇。不能做
$n3 = rand($n1, $n2)
因爲這可能會給我一個號碼80 - 120
之間,我需要避免。
如何解決這個問題?
由於兩個範圍的大小不同(即使只用1號),以確保良好的隨機散佈,你需要這樣做:
$random = rand(0, 200 - 39);
if ($random>=120-39) $random+=39;
最快的方法。 :)
這種工作方式是假裝它是一個單一的範圍,如果它最終選擇一個數字超過第一個範圍,我們增加它以適應第二個範圍。這確保了完美的傳播。
PHP有一個新的功能,這就是所謂的範圍。非常易於使用,並且可以位於PHP手冊中。
它允許您輸入一個最小/最大數量來獲取範圍。
<?php
echo range(0, 1000);
?
從技術上講,你也可以輸入自己的兩個數字作爲數字範圍。
得到兩個隨機數$ N1和$ N2
$n1 = rand(0, 80); $n2 = rand(120, 200);
定義新陣列稱爲$ N3
$n3=array();
添加$ N1和$ N2成array $ n3使用array_push()函數
array_push($n3,$n1,$n2);
使用array_rand()函數來查找隨機指標$從陣列$ find_index N3。
$find_index=array_rand($n3,1);
顯示結果
echo $n3[$find_index];
在你的問題的開始,你指定的'1-80'的範圍內,但代碼反映了一系列的'0-80'。你是什麼意思? – Sonic42 2012-04-22 22:04:15
對不起 - 修正了它 – pepe 2012-04-22 22:05:56