如何得到相对合理的概率
需求如下:
在条件0的时候 30%概率发生事件0 40%概率发生事件1 30%概率发生事件2
在条件1的时候 70%概率发生事件0 10%概率发生事件1 20%概率发生事件2.
现处理方式如下
int num = getRand(0,10);//取,0到9之间的随机值
if(条件0) {
if(num < 3)事件0
else if(num < 7)事件1
else 事件2
}else
if(条件1) {
if(num < 7)事件0
else if(num < 8)事件1
else 事件2
}
但是实际上 这样的概率取得方式并不理想,多数情况下不能体现概率的含义,比如我进行统计100次事件发生,而得到的各个事件的发生概率与期望相差很大.
请问有其他方式可以得到相对真是的概率么?
[解决办法]
也就是说在条件0的时候,做100次,事件0发生发生30次,事件1发生发生40次,事件2发生发生30次咯?结果差很大?做1000次看看。
[解决办法]
事件0 事件0 事件0 事件1 事件1 事件1 事件1 事件2 事件2 事件2
通过随机数进行乱序,比如:
事件2 事件0 事件1 事件2 事件1 事件0 事件1 事件2 事件0 事件1
然后依次取好了,取一个删一个,取完后复位。保证完全符合概率。
[解决办法]
是你的判断弄错了,修改如下:
int num = getRand(0,10);//取,0到9之间的随机值
if(条件0) {
if(num < 3)事件0
else if(num > 2 && num < 7)事件1
else 事件2
}else
if(条件1) {
if(num < 7)事件0
else if(num > 6 && num < 8)事件1
else 事件2
}