功能发生的“机会”?

时间:2013-09-16 06:41:21

标签: c random

通过使用rand()函数,我们可以创建输出的可能性。

rand()%4 + 'A'类似,基本上意味着此代码将生成从A到D的随机字母。

然后我的问题是,我们能否将“可能性率”纳入这一随机生成?

例如,对于A出现在4个字母表中(从A到D),只有24%的几率

而B将以12%的比率出现,等等。

  • 我正在使用Windows,我的编程程序是Visual Studio 2012.(语言为C)

3 个答案:

答案 0 :(得分:3)

创建一个包含24个A,12个B和100个C和D的适当数字的100个字母的字符串。生成0到99之间的随机数;使用它作为字符串的索引。这为您提供加权随机选择。

这是一种简单但几乎是图形化的方式。您也可以根据范围来决定。

答案 1 :(得分:2)

  

例如,A中出现4个字母(从A到D),只有24%的几率,而B将以12%的速率出现,等等。

是的,当然你可以这样做。只需选择介于1和100之间的数字。如果数字在[1,24]范围内,则结果为A.如果数字在[25,36]范围内,则结果为B,依此类推。 / p>

关键是你可以将随机函数的多个结果映射到每个结果上,这样做可以让你调整每个结果的频率。

答案 2 :(得分:1)

您可以通过为每个结果分配%来实现。堆叠百分比使A从0到25,B从26到31等。现在生成0..99范围内的随机数并查看它击中的区域。在视觉上它看起来像这样:

<--A 25%--><-B 5%-><---C30%---><-----D40%----->