Blade, хм, ты прав, как раз начали проходить данный раздел, пошевелив извилинами, можно что-то придумать
я думаю, мат методы тут использовать будет лишним
по сабжу, набросал такой скрипт, но используется не выроятность выпадания числа, а количество таких чисел в множестве
function createSet( $probabilities ){
$set = array();
foreach( $probabilities as $number=>$qty ){
$gen_sub_set = array_fill( count($set), $qty, $number);
$set = array_merge($set, $gen_sub_set);
}
return $set;
}
function getRandomNumberFromSet( $probabilities ){
$set = createSet( $probabilities );
var_dump($set);
return $set[ array_rand( $set ) ];
}
$array = array(
1 => 10, // 10 = 25% от 40, к примеру
2 => 20,
3 => 4,
4 => 6
);
//var_dump( getRandomNumberFromSet( $array ) );
echo getRandomNumberFromSet( $array );
Я уже и забыл как здесь интерестно.
Ну чтож и я свой вариантик отдам
/* *
* $array = array('вариант ответа' => 'процент вероятности')
*/
function randprocent($array = array('da' => '50', 'net' => '30', 'poh' => '20')) {
asort($array);
$endv = end($array);
$r = rand(1, 100);
foreach($array as $k => $v)
if($r <= $v || ($r >= $endv && $endv == $v))
return $k;
}
echo randprocent();
Зы: если найдете преминение этой функции напишите в ЛС