gpt4 book ai didi

c# - 加权随机数生成 C#

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:12 26 4
gpt4 key购买 nike

我一直在尝试为此寻找答案,但我发现的所有讨论要么使用我不理解的语言,要么依赖于拥有一个集合,其中每个元素都有自己的权重。

我基本上只想得到一个介于 0 和 10 之间的随机数,这是“中等权重”,因为 5 比 0 和 10 更频繁。基本上我一直在尝试找出一种算法,我可以给出任何number 是我定义的最小值和最大值之间的“加权数”,并且生成的所有数字都将适当加权。我知道这听起来像是“我不想考虑这个,我会坐下来等别人来做这件事”,但我已经思考和搜索了大约一个小时,我真的迷路了:|

所以最后,我希望我可以调用(通过扩展方法)

random.NextWeighted(MIN, MAX, WEIGHT);

最佳答案

你有一个 inverse normal distribution method可用。

  1. 缩放您的随机数,使其成为介于 0 和 1 之间的双倍数。

  2. 将其传递给 InverseNormalDistribution。

  3. 根据权重缩放返回值。 (比如除以重量超过100。)

  4. 计算 [ (MIN + MAX)/2 ] + [ (ScaledValue) X (MAX - MIN) ]

  5. 如果小于 MIN,则返回 MIN。如果大于 MAX,则返回 MAX。否则,返回此值。

关于c# - 加权随机数生成 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com