int f(float probability)
{
if (((float)rand())/RAND_MAX < probability)
return 1;
return 0;
}
Получить число с указанной вероятностью
Вобщем нужна функция, которая вернёт 1 с определённой вероятностью ( или, в противном случае, 0 ). Т.е. я говорю функции "Верни мне 1 с вероятностью 0.6", и получить от неё либо 1 либо 0. Т.е. обычный рандом, как вы понимаете, здесь не канает.
Никак не могу найти решение...
Подскажите что-нибудь, кто знает.
спасыб.
Я чёт не могу понять в чем проблема ? Рандомишь число от 0 до 99. Оно с 60% вроятностью попадает в интервал от 0 до 59 следовательно если оно <59 верни 1 если больше верни 0. Если я не прав прошу простить ...
Нашлась универсальная реализация :)
Код:
Прогнал раз 10 на цикле в 1000 итераций, выдаёт то что нужно.
Т.е. например для вероятности 0.5 возвращает 1 примерно 500 раз в среднем (489, 511, 502, ... итд)