LINUX.ORG.RU
ФорумTalks

[специалистам][вероятность][си] Как получить событие с заданной вероятность?

 ,


0

0

Доброго времени суток.

Ситуация такая - есть событие, которое должно происходить с вероятностью 1,2e-5 .

Вот что то не соображу, как написать такую функцию на си, которая бы возвращала истину с такой вероятностью?

В голову приходит что-то вроде

bool event() {
int j = 1 + (int)(1000000.0 * (random()/(RAND_MAX+1.0)));
return (bool)(j < 12);
}


И вроде похоже на истину, если распределение random равномерное. Но вот два момента:

1) что-то я не пойму, какое у random распределение?

2) если равномерное, то будет ли работать предложенный вариант для равномерного распределения?



★★★★★

да, равномерное. Будет работать, если не ошибся с количеством нулей и я понял верно идею приведенного кода.

Вообще, генерируешь случайное действительное чило от 0 до 1. Если оно меньше 1,2e-5, то True, иначе False. у тебя вроде то же самое написано.

yet_another_lor_account
()

> генерируешь случайное действительное чило от 0 до 1. Если оно меньше 1,2e-5, то True, иначе False.

> yet_another_log_account

гм-гм.. а как равномерно сгенирировать действительное число от 0 до 1? в смысле с равномерным распределением? Если всё тем же random, то чем способ выше плох?

AndreyKl ★★★★★
() автор топика
Ответ на: комментарий от yet_another_lor_account

ну да, верно. Спасибо.

AndreyKl ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Как я понял, он в glib реализован. Гляну на досуге. Спасибо.

AndreyKl ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.