c语言 - "Chances"函数发生?



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

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

那么我的问题是,我们可以把"可能性率"放到这个随机生成中吗?

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

而 B 将以 12% 的比率出来,依此类推。

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

创建一个包含 100 个字母的字符串,其中包含 24 个 A、12 个 B 以及适当数量的 C 和 D。 生成一个介于 0 和 99 之间的随机数;将其用作字符串的索引。 这为您提供了加权随机选择。

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

例如,对于 A 在 4 个字母表中出现(从 A 到 D),只有 24% 的机会出现,而 B 将以 12% 的比率出现,依此类推。

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

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

您可以通过为每个结果分配一个 % 来做到这一点。堆叠百分比,以便 A 从 0 到 25,B 从 26 到 31,依此类推。现在生成 0..99 范围内的随机数,看看它击中了哪个区域。视觉上如下所示:

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

最新更新