gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:16:17 26 4
gpt4 key购买 nike

我一直在尝试确定如何在具有定义概率的各种给定选项之间进行选择,我正在做的是生成一个介于 0 和 100 之间的随机数,然后与概率进行比较,但我有很多概率具有相同的百分比。例如:程序包含一场棒球比赛,我必须根据概率选择球员的击球结果。

无预付款:.04
飞球:.04
错误:.02
内场单打:.03

等等。

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

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

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

最佳答案

没有理由在这里使用 double。
你只需要总结这些值(更一般地说,它是离散的 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> header ,尤其是 Mersenne Twister,以获得更好的选择
(然后,您甚至可能想使用 double )

关于c++ - 使用概率在各种选项之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com