|
|
|
| Предположим, у меня две ссылки. Мне нужно, чтобы заходы по одной были в соотношении с заходами по другой как 4 к 1 или 5 к 1 (по случайке).
Как это сделать? Разумеется, я сделал if(rand(0,6)<2){ go сюда }else{ go отсюда }
Но это не работает! Собственно говоря, что мешает rand'у ВСЕГДА выпадать на единичку?
Тогда я полез читать теорию вероятности... И понял, что лучше не читать. Как же решить эту проблему? | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.07.2005 в 03:09)
| | Скорее всего есть генератор случайных чисел. Перед rand и должна стоять функция случайного числа. В basic была randomize timer. Попробуй, может и здесь такая же, хотя может и другая. Посмори в справочнике или дождись тех, кто знает эту функцию! | |
|
|
|
|
|
|
|
для: Football
(20.07.2005 в 08:35)
| | Хм.. Так вроде роль такой функции сам rand и исполняет. Но КАК испоняет.... По идее, такая же любая функция будет так действовать. Скорее это логическая проблема. По идее, избежать этого никак нельзя - кроме того, как записывать куда-то все действия, а потом анализатором проходиться, и исходя из соотношения.............. | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.07.2005 в 03:09)
| | Хм... у меня работает как надо (PHP 5.0.4), у вас PHP какой версии? | |
|
|
|
|
|
|
|
для: cheops
(20.07.2005 в 12:01)
| | Я не об этом... Понимаете - rand(0,1) может ВСЕГДА ноль выдавать. Или всегда единицу. Не в rand дело. Возьмите монетку... Представьте, что хотите случайность действий - решка - одно, орел - другое. И вам ВСЕГДА выпадает решка. Есть такая вероятность. И вот на деле у меня практически так с rand и происходит... | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.07.2005 в 17:49)
| | О! А можно как-то выяснять - какой сейчас десяток минут часа? Если от 0 до 10, от 20 до 30 или от 40 до 50, то сюда, а если от 10 до 20, от 30 до 40 или от 50 до 60, то туда... Как это сделать? | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.07.2005 в 17:53)
| | Если честно с предыдущим постом не очень понял, но можно и по времени ориентироваться - здесь даже генератор равномернее получиться. Вы можете даже к чётности секунд привязаться.
<?php
$num = date("s"); // Секунды
// $num = date("i"); // Минуты
// $num = date("G"); // Часы
if((int)($num/2) == (float)($num/2)) echo "Туда";
else echo "Сюда";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.07.2005 в 19:09)
| | Это получится на четные секунды туда, на нечетные - сюда? | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.07.2005 в 21:59)
| | Ага. | |
|
|
|
|
|
|
|
для: Shorr Kan
(20.07.2005 в 03:09)
| | Мне кажется, что решение проще. Если Вам надо, чтобы выпадение было примерно 1:5 , то просто сделайте rand(1,5) или rand(1,4). И, соответственно, поменяйте условия: if(==1) сюда else туда. И все. | |
|
|
|