2015-03-20 2 views
0

У меня есть событие, которое должно иметь 0,5% вероятность возникновения (не очень часто).В C++, как я могу создать случайное число, основанное на двойной вероятности вероятности?

Как я могу сгенерировать случайное число на основе этой вероятности?

Будет что-то вроде этого будет достаточно, я не верю, что так srand возвращает целое ...

double rate = 0.05; 
if((srand() % 100) < rate) 
{ 
    std::cout << "Event Occurred" << endl; 
} 
+3

'srand' не генерирует случайные числа; 'rand' делает. –

+0

Возможный дубликат [Как получить значение, основанное на определенной вероятности] (http://stackoverflow.com/questions/3572343/how-to-obtain-a-value-based-on-a-certain-probability) –

+1

@ Дух МэтьюМома прав, но хотел добавить, что трюк помнит, что вероятность 0,05% эквивалентна вероятности 5/10000. Другими словами, вам просто нужно масштабировать свои значения соответствующим образом, чтобы все было целым числом. – aruisdante

ответ

4
std::mt19937 rng(std::random_device{}()); 
std::bernoulli_distribution d(0.005); 
bool b = d(rng); // true 0.5% of the time; otherwise false 
Смежные вопросы