首先的機會較高,您的系統只是...... 愚蠢的。它延續橫幅,有很多的意見,而新創建的橫幅0或一些看法將永遠不會被拾起的機會,因此將永遠不會真正看到 ...
話雖這麼說,如果你有一個數組看起來是這樣的:
$banners = array
(
'banner1' => 1,
'banner2' => 2,
'banner3' => 4,
'banner4' => 8,
'banner5' => 16,
);
可以使用這樣的函數之一weightily挑一個條幅:
function Probability($data)
{
if (is_array($data) === true) {
$result = 0;
$probability = mt_rand(1, array_sum($data));
foreach ($data as $key => $value) {
$result += $value;
if ($result >= $probability) {
return $key;
}
}
}
return false;
}
用法(測試@ CodePad.org或@ IDEOne):從100個處決
echo Probability($banners); // banner5
樣品:
Array
(
[banner5] => 41
[banner4] => 38
[banner3] => 10
[banner2] => 8
[banner1] => 3
)
-1,即SQL查詢將總是返回最欣賞的一面旗幟。 – 2010-05-02 05:35:10
其實它不會。 – Galen 2010-05-02 05:53:17
對不起,我改變了我的投票。 – 2010-05-03 23:31:57