使用概率在各种选项之间进行选择

时间:2015-11-26 01:27:47

标签: c++ random probability

我一直在努力确定如何在定义概率的各种给定选项之间进行选择,我正在研究的是生成0到100之间的随机数,然后与概率进行比较,但我有很多概率具有相同的百分比例如:该程序包含一个棒球比赛,我必须通过概率选择球员的击球结果。

没有预付款:.04
飞球:.04
错误:.02
内场单身:.03

等等。

srand(time(NULL));
double num = rand() % 100;

double Prob = 70;
if( num < Prob)
     cout << num << endl;

这是我一直在使用的代码,它可以很好地处理一个概率,但是当涉及到许多概率和一些具有相同值的概率时,它会变得复杂。

1 个答案:

答案 0 :(得分:2)

这里没有理由使用双倍。
而你只需要总结这些值(更一般地说,它是离散的CDF):

int num = rand() % 100;
if(num < 4) { /*no advance*/ }
else if(num < 8) { /*fly ball*/ }
else if(num < 10) { /*error*/ }
else if(num < 13) { /*infield single*/ }
else ...

除此之外,不要使用rand(),它不会产生好的随机数。
有关更好的选择,请参阅<random>标题,尤其是Mersenne Twister (然后,您甚至可能想要使用double

相关问题