-2

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

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

那么我的问题是,我们可以将“可能性率”放入这个随机生成中吗?

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

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

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

3 回答 3

3

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

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

于 2013-09-16T06:44:01.457 回答
2

例如,对于 A 出现在 4 个字母中(从 A 到 D),只有 24% 的机会,而 B 的出现率为 12%,等等。

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

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

于 2013-09-16T06:45:13.433 回答
1

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

<--A 25%--><-B 5%-><---C30%---><-----D40%----->
于 2013-09-16T06:44:13.940 回答