【问题标题】:Calculating value based on weighted percentage chance根据加权百分比机会计算值
【发布时间】:2011-07-01 15:39:24
【问题描述】:

我正在编写一个程序,我需要根据加权机会获得一个随机值,并且遇到了真正的困难。我需要做的一个例子:

a = 50%,b = 30%,c = 10%,d = 10%

在这个例子中,我需要能够得到一个随机值,a、b、c 或 d,返回的值是 50% 的时间为“a”,30% 的时间为 b,等等...

非常感谢

【问题讨论】:

    标签: objective-c math logic


    【解决方案1】:

    根据每个值出现的机会分配一个介于 0 和 1 之间的数字范围。例如,A 应该是 0 到 0.5,因为它需要 50% 的机会。然后,获取一个介于 0 和 1 之间的随机数。随机数落入哪个值的范围就是你得到的值。

    A = [0, .5)
    B = [.5, .8)
    C = [.8, .9)
    D = [.9, 1)

    随机数为[0,1)

    [ = 包含,) = 不包含。

    【讨论】:

    • 因为字母代表某些事件正在发生,而在某些情况下(在某些层面上)这些事件不会发生,例如在某些情况下我如何解释 B 为 0,例如
    • A = [0, .5), C = [.5, .6), D = [.6, .7), DoNothing = [.7, 1)。或者,如果您仍然希望某些事件发生(而不是 B),请更改范围并获取 [0, .7) 之间的随机数。只需根据您拥有的机会创建范围,并通过忽略其中的结果来处理额外的空格,或者获取一个仅在范围内的数字。
    • 太棒了!!非常感谢 - 我已经为此苦苦挣扎了 2 天 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2021-03-16
    • 2021-04-06
    相关资源
    最近更新 更多