|
|
|
| $rand=rand(1,2);
echo $rand;
Это понятно. А как сделать так, что бы вероятность выпадения числа 1 была, например, 30%, а 2-ки - 70%? | |
|
|
|
|
|
|
|
для: Sergeous
(28.01.2008 в 12:08)
| |
<?
$percent = rand(1, 100);
if ($percent <= 30) echo 1;
else echo 2;
?>
|
| |
|
|
|
|
|
|
|
для: Drago
(28.01.2008 в 12:43)
| | Спасибо. А других способов нет? | |
|
|
|
|
|
|
|
для: Sergeous
(29.01.2008 в 01:56)
| | А чем этот не нравится | |
|
|
|
|
|
|
|
для: bronenos
(29.01.2008 в 10:26)
| | Напрмер как быть если нужно выбирать из трех чисел, и у каждого свой процент выпадения. | |
|
|
|
|
|
|
|
для: Sergeous
(01.02.2008 в 17:44)
| | Сделать 3 if'а | |
|
|
|
|
|
|
|
для: Sergeous
(29.01.2008 в 01:56)
| |
<?
// массив число => шанс выпадения (%)
$nums = array(1 => 10, 2 => 10, 3 => 30, 4 => 49, 5 => 1);
$overall = 0;
foreach( $nums as $num => $prob ) $overall += $prob;
$rand = mt_rand(0, $overall);
$i = 0;
foreach( $nums as $num => $prob ) {
if ( $rand > $i && $rand <= $i + $prob ) {
print $num; // выпавшее число
break;
}
$i += $prob;
}
|
Я таким методом сделал на сайте ротацию баннеров, где у каждого баннера есть шанс показа от 1 до 100. | |
|
|
|