因此,我们有一个团队项目将在一天结束时到期,除了一个人之外,每个人都已经完成了他们的工作。我们没有多少时间离开,我也没有从那个人那里听到过,所以我决定写下那些人,因为他们从不上传它。 问题是......我不知道如何做这个部分。 有三匹马,我必须做到这一点,以便1匹马随机赢得比赛。这很简单。只需使用
<time.h>
srand((unsigned)time(NULL));
1 + rand()%(3-1+1);
问题是每匹马应该有不同的概率
马1有45%的获胜机会 马2有30% 马3 25% (注意这个加起来为100)有人可以帮我弄清楚如何使用概率让马随机获胜吗? 由于我的情况,直到一天结束,我自己想出这个:(
答案 0 :(得分:3)
选择1到100范围内的随机数,均匀分布。 1至45是马1,26至75是马2,76至100是马3。
如果您愿意,可以将算法调整为基于零的索引。
答案 1 :(得分:1)
生成U(0,1),将其称为u
。如果{1}}马1获胜,否则u <= 0.45
(即介于0.45和0.75之间)它是马2,否则它是马3.这在概念上类似于David Heffernan提出的基于整数的解决方案,但可以处理任意概率不能很好地映射到整数集,例如1 / pi或1 / e。
答案 2 :(得分:0)
将RNG生成的数字范围分成具有相应尺寸的碎片。然后找出一个数字所在的部分来决定哪匹马获胜。
听起来马的数量很少,所以简单的if
else
链可能会正常工作。如果你有很多匹马并且速度很重要,那么将这些碎片的边界放在一个数组中,并通过二分搜索找到正确的一个。
答案 3 :(得分:0)
尝试使用随机数生成器功能。 导入头文件 #包括 要么 #包括 将函数分配给将存储值的变量 例如 R =兰特();
然后你可以将每匹马作为阵列的一个元素。 使用排序技术对此数组进行排序以找到最大值。