【发布时间】:2025-12-30 08:30:05
【问题描述】:
我会尽量保持基本和重点。
基本上,我有与某个数字范围相关的权重/概率。例如:
0:10%
1:50%
2:15%
3:25%
这会转化为累积概率:
0:10%
1:60%
2:75%
3:100%
在 VBA 中使用统一的 RNG,程序会生成介于 0 和 1 之间的数字,或者它设置的任何下限。使用与上一个示例相同的值,但只生成大于 60%(和
这就是我卡住的地方。我需要将这些随机数非常有效地转换为它们的“对应值”。
所有这些都存储在 VBA 变量中,不用说,我不想为每种情况编写 Select Case,因为它们实际上是 120 个不同的变量和权重。
截至目前,这是我必须生成这些数字的:
RandomNumber = LowerLimit + Rnd() * (1 - LowerLimit)
感谢您的所有帮助!如果我错过了讨论此特定问题的帖子,请随时向我推荐,但我确实没有找到与相应随机数相关的任何内容。
【问题讨论】:
-
您能提供更多信息吗?您可以使用
For... Next循环来执行此操作。获得随机数后,循环遍历包含 120 个不同变量和权重的表以找到匹配项并输出您需要的Range.Offset()答案。 -
您的值和权重是如何存储的:作为单元格还是在 VBA 结构中,如数组或集合?