我有以下的數組:PHP陣列餾分
public $percentage = array(
0 => 20.30,
1=> 19.96,
2=> 14.15,
3=> 45.59
);
//它總結在100%
我需要一個隨機函數由值的百分比,
返回鍵例如:得到0的可能性是20.30%,並且得到2的可能性14.15%, 第一個用戶得到0,第二個有2
P租賃讓我知道你建議我使用的功能是什麼。
我有以下的數組:PHP陣列餾分
public $percentage = array(
0 => 20.30,
1=> 19.96,
2=> 14.15,
3=> 45.59
);
//它總結在100%
我需要一個隨機函數由值的百分比,
返回鍵例如:得到0的可能性是20.30%,並且得到2的可能性14.15%, 第一個用戶得到0,第二個有2
P租賃讓我知道你建議我使用的功能是什麼。
將百分比轉換爲累計概率,然後將其與隨機數進行比較。
如果隨機數屬於一個類別,則輸出結果。如果沒有,轉到下一個,直到找到一個。這使您可以根據數組中陳述的概率百分比輸出一個數字。
$percentage = array(
0 => 20.30,
1=> 19.96,
2=> 14.15,
3=> 45.59
);
$random = mt_rand(0,10000)/100;
foreach ($percentage as $key => $value) {
$accumulate += $value;
if ($random <= $accumulate) {
echo $key;
break;
}
}
謝謝,它完成了這項工作! – 2013-03-24 10:32:36
真棒,幹得好! – saada 2013-03-24 11:21:35
$random_n = mt_rand(0,10000)/100;
while(true){
if($random_n <= $percentage[0])
echo 0; break;
else if($random_n <= $percentage[1])
echo 1; break;
else if($random_n <= $percentage[2])
echo 2; break;
else if($random_n <= $percentage[3])
echo 3; break;
else
$random_n = mt_rand(0,10000)/100; //generate a new random #
}
我會做這樣的事情:
<?php
$percentage = $tmp = array(
0 => 20.30,
1=> 19.96,
2=> 14.15,
3=> 45.59
);
sort($tmp);
$rand = mt_rand(0,100);
foreach($tmp as $percent) {
if($percent >= $rand) {
echo array_search($percent,$percentage);
die();
}
}
echo (count($percentage) - 1);
函數究竟要做什麼?我無法想象 – 2013-03-24 10:09:25
你想要一個有20.3%概率返回0的函數,14.15%返回2等嗎? – 2013-03-24 10:16:23
你提供20.30%的概率爲零 – 2013-03-24 10:23:46