我正在尝试生成一个 -1 到 6 范围内的随机数,但每次我生成一个随机数时,获得该范围内数字的概率由百分比给出。例如,在百分比列表中,第一个百分比有生成 6 的概率,第二个百分比有生成 5 的概率,依此类推。这些数字必须是随机生成的。我正在尝试用 C 编写代码。谢谢你的想法。
最佳答案
您可以得到一个介于 0 和 100 之间的随机数,并检查落在哪个百分比范围内并为其分配相应的值。
例如:
0 - 5 : -1
5 - 25 : 0
25 - 31: 1
31 - 48: 2
48 - 50: 3
50 - 75: 4
75 - 87: 5
87 - 100: 6
编辑:
要实现这一点,您需要一个或两个数组,一个存储百分比边界(在本例中表示 5、25、31、48、50、75、87),另一个存储输出值(如果输出是完全随机的,在这里它们是连续的,你不需要第二个数组)。
然后调用 rand() * 100.0/RAND_MAX
获取 0 到 100 之间的随机 float ,或者调用 rand() % 100 + 1
获取 0 到 100 之间的随机整数.
有了这个,您可以使用二进制搜索方法在 O(log n) 时间内找到它对应的百分比范围。使用索引可以找到相应的输出(通过数组或函数)
关于c - 如何在给定获得其中一个数字的概率的范围内生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131198/