Есть два диапазона, например от 25 до 100 и от 100 до 200. Минимум при этом равен 25, а максимум 200. Я вызываю функцию rand(25,200) при этом, шанс того что выпадет число из первого диапазона примерно 42%, а из второго 58%. Хочу сделать так, чтобы шанс выпадения числа из второго диапазона было примерно 75%.
Думаю решить проблему следующим образом. Создаю массив, в него записываю сначала все элементы из двух диапазонов:
$myarray = array();
for($i = 25; $i<=200;$i++){
$myarray[] = $i;
}
Таким образом если вызвать rand(0,count($myarray))
, то она вернет индекс случайного элемента массива, в этом случае вероятность выпадения чисел из второго диапазона остается прежней, а именно 58%. По идее теперь нужно подмешать в массив ещё немного числе из второго диапазона, чтобы их стало больше и они выпадали чаще.
$a_range_elements = 100-25+1; //Количество элементов в первом диапазоне
$adding_elemets = ($a_range_elements * 100/ 25) - $a_range_elements; //Кол-во элементов которые нужно добавить в массив, чтобы второй диапазон составлял 25% от общего кол-ва элементов
В моем случае нужно добавить (76*100/25)-76 = 228 элементов. Таким образом всего у нас будет в массиве 228 + 76 = 304 элемента, и 76 из них - первый диапазон, что составляет 76*100/304 = 25%, т.е. второй диапазон - 75%.
Собственно вопрос, как теперь подмешать эти элементы в массив? Диапазоны могут быть довольно большие и наверное что-то типа этого мне не очень подходит:
for($i = 0; $i<=304;$i++){
$myarray[] = rand(100,200);
}
Не нужно никаких массивов и подмешиваний. Это неоптимально, и кроме того, подмешивание чисел изменит частоту выпадения чисел и они перестанут быть случайными.
Сначала выбрасываем число из диапазона 1-100. Если оно меньше 25 (вероятность 25%), то выбрасываем число из диапазона 25-100, а если больше 25 (вероятность 75%), то выбрасываем число из диапазона 100-200.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Где ошибся и как получить данные? сейчас пишет страница недоступна
как сделать чтобы доступ к регистрации в dokuwiki был только с одной (например главной) страницы
Есть сайт об играхНа каждой странице есть ссылка на покупку игры в магазине, в котором самая низкая цена