[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Функция Рандома в процентах(не целых чисел)
karoax56
Помогите пожалуйста,возникла проблема,незнаю точно как вывести,мы имеем.

Html Код
<?php
Сам код выглядит так:

Запрос к 6 данным в базе:

Запрос
"к чему" (и вот тут нужно мне шанс выпада условно 80%)
2.Запрос
(шанс выпада 10%)
3.Запрос(шанс выпада 5%)
4.Запрос (шанс выпада 4,5%)
5.Запрос (шанс выпада 0,4%)
6.Запрос (шанс выпада 0,1%)

?>
Какая функция мне подойдет,был вариант построить массив и вписать шанс его выпада...Как лучше будет сделать?



Спустя 11 минут, 44 секунды (3.04.2012 - 08:41) Игорь_Vasinsky написал(а):
если рандомо - то так же рандомо и считай))

Спустя 28 секунд (3.04.2012 - 08:41) karoax56 написал(а):
ну,а поподробнее?

Спустя 1 минута, 35 секунд (3.04.2012 - 08:43) Nikitian написал(а):

//$data - массив с нужными данными
$arr = array(
0=>80,
1=>80+10,
2=>80+10+5,
3=>80+10+5+4.5,
4=>80+10+5+4.5+0.4,
5=>80+10+5+4.5+0.4+0.1
);
$rnd = rand(0,1000)/10;
for($i=0;$i<=5;$i++){
if($rnd<=$arr[$i]){
echo $data[$i];
break;
}
}


Спустя 11 минут, 16 секунд (3.04.2012 - 08:54) karoax56 написал(а):
Спасибо,только насчет $data не очень понял,чтобы туда вставить.
Получился код
Твой код.

Запрос
Массив 1 = Запросу и тд.
И вверху html код,сейчас про тестирую

Спустя 7 минут, 32 секунды (3.04.2012 - 09:02) Nikitian написал(а):
$data - это массив с данными для выборки рандомом, ключи в котором соответствуют ключам из массива $arr, в котором последнее число сложений - вероятность выпадания текущего элемента массива.

Спустя 10 минут, 41 секунда (3.04.2012 - 09:12) I++ написал(а):
Цитата (karoax56 @ 3.04.2012 - 09:29)
Помогите пожалуйста,возникла проблема,незнаю точно как вывести,мы имеем.

Html Код
<?php
Сам код выглядит так:

Запрос к 6 данным в базе:

Запрос
"к чему" (и вот тут нужно мне шанс выпада условно 80%)
2.Запрос
(шанс выпада 10%)
3.Запрос(шанс выпада 5%)
4.Запрос (шанс выпада 4,5%)
5.Запрос (шанс выпада 0,4%)
6.Запрос (шанс выпада 0,1%)

?>
Какая функция мне подойдет,был вариант построить массив и вписать шанс его выпада...Как лучше будет сделать?

3.Запрос(шанс выпада 5%)
4.Запрос (шанс выпада 4,5%)
5.Запрос (шанс выпада 0,4%)
6.Запрос (шанс выпада 0,1%)

<?php

$val = mt_rand(1, 1000);

// Шанс 5%

if($val <= 50)
echo 'Везунчик';
else
echo 'Неудачник';

// ---------------------------

$val = mt_rand(1, 1000);

// Шанс 4.5%

if($val <= 45)
echo 'Везунчик';
else
echo 'Неудачник';

// ---------------------------

$val = mt_rand(1, 1000);

// Шанс 0.4%

if($val <= 4)
echo 'Везунчик';
else
echo 'Неудачник';


// ---------------------------

$val = mt_rand(1, 1000);

// Шанс 0.4%

if($val <= 1)
echo 'Везунчик';
else
echo 'Неудачник';

?>

Чтиво на досуге: http://vneuroka.ru/matmir/presentation.php?cat=3&sub=2&num=4

Цитата
если рандомо - то так же рандомо и считай))

Посмеялся laugh.gif


Спустя 7 минут, 15 секунд (3.04.2012 - 09:20) Nikitian написал(а):
I++
Этот вариант не гарантирует уникальность везунчиков, как и вероятность их возникновения.

Спустя 20 минут, 46 секунд (3.04.2012 - 09:40) I++ написал(а):
Цитата (Nikitian @ 3.04.2012 - 10:20)
I++
Этот вариант не гарантирует уникальность везунчиков, как и вероятность их возникновения.

Ойли?

http://www.cryptography.com/public/pdf/IntelRNG.pdf
http://software.intel.com/en-us/articles/f...mr-4-processor/

Если у него железо на котором он все это генерирует достаточно современное, то норм.

Исходники PHP с генерацией чисел не смотрел, хотите посмотрите узнайте.

Вот:

rand() 10.03 1.00
fast_rand() 4.99 2.01
rand_sse() 1.83 5.48

В статье есть

Спустя 3 минуты, 18 секунд (3.04.2012 - 09:44) Nikitian написал(а):
Цитата (I++ @ 3.04.2012 - 09:40)
Ойли?

Именно так. Я не про уникальность рандомов, а уникальность выпадения везунчика. Он может вообще не выпасть, хотя сумма всех вероятностей 100%, а может и выпасть в нескольких проверках одновременно - тогда уникальность будет неверной, каковой она и является в этом примере.

Спустя 5 минут, 38 секунд (3.04.2012 - 09:49) I++ написал(а):
Цитата
Он может вообще не выпасть, хотя сумма всех вероятностей 100%


100% это 100% шанс выпада, как так, что он может не выпасть?

или типа:

Например идем за пивом, у нас шанс 100%, что пиво есть, а приходим пива нет. (В этом случае значение 100% фиктивно.)

Какова логика формирования шанса?

Спустя 3 минуты, 37 секунд (3.04.2012 - 09:53) Nikitian написал(а):
Не так. Идём за пивом: есть Жигулёвское, Василеостновское и Гиннес. Шанс, покупки каждого из них будет соответственно 1%, 80%, 19%. Если считать по вашей системе, получится, что я вообще ничего могу не купить или даже купить сразу несколько разных бутылок, что бессмысленно. У вас же для каждой проверки $val рассчитывается заново, соответственно он может попаст md несколько условий. Если же егоне рассчитывать каждый раз, то он моэет вообще ни кв одно условие не попасть.

Спустя 5 минут, 27 секунд (3.04.2012 - 09:58) I++ написал(а):
Нужно, чтобы выпало одно из Жигулёвское, Василеостновское и Гиннес с шансами 1%, 80%, 19% ?

Спустя 10 минут, 22 секунды (3.04.2012 - 10:09) Nikitian написал(а):
Видимо так. Не спроста же у тс вероятности подобраны так же, чтобы в сумме давали 100%.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.