Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Случайное число с приоритетом
 
 автор: Sergeous   (28.01.2008 в 12:08)   письмо автору
 
 

$rand=rand(1,2);
echo $rand;

Это понятно. А как сделать так, что бы вероятность выпадения числа 1 была, например, 30%, а 2-ки - 70%?

   
 
 автор: Drago   (28.01.2008 в 12:43)   письмо автору
 
   для: Sergeous   (28.01.2008 в 12:08)
 


<?
$percent 
rand(1100);
if (
$percent <= 30) echo 1;
else echo 
2;
?>

   
 
 автор: Sergeous   (29.01.2008 в 01:56)   письмо автору
 
   для: Drago   (28.01.2008 в 12:43)
 

Спасибо. А других способов нет?

   
 
 автор: bronenos   (29.01.2008 в 10:26)   письмо автору
 
   для: Sergeous   (29.01.2008 в 01:56)
 

А чем этот не нравится

   
 
 автор: Sergeous   (01.02.2008 в 17:44)   письмо автору
 
   для: bronenos   (29.01.2008 в 10:26)
 

Напрмер как быть если нужно выбирать из трех чисел, и у каждого свой процент выпадения.

   
 
 автор: Freddie_X   (01.02.2008 в 19:39)   письмо автору
 
   для: Sergeous   (01.02.2008 в 17:44)
 

Сделать 3 if'а

   
 
 автор: Саня   (01.02.2008 в 19:50)   письмо автору
 
   для: Sergeous   (29.01.2008 в 01:56)
 

<?
// массив число => шанс выпадения (%)
$nums = array(=> 10=> 10=> 30=> 49=> 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.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования