【问题标题】:Algorithm/data structure for a set of modifiable probabilities that always sum to 100一组总和为 100 的可修改概率的算法/数据结构
【发布时间】:2015-08-29 02:56:40
【问题描述】:

我目前正在开展一个项目,该项目需要我在四个不同元素之间保持可变的概率平衡。在我的情况下,我需要在北、西、南和东方向之间进行随机选择,这可能会在代码中的多个点受到影响和更改。我的限制:

  • 总是只有四个方向。
  • 可以根据概率值随机选择方向。
  • 这个概率值可以随时增加或减少。
  • 每个方向的概率总和必须始终等于 100。
  • 每个方向的概率永远不会低于 0 或超过 100。
  • 一个方向的概率值的任何增加或减少都应触发其余方向的概率相等(但平衡)的变化。例如:如果一个方向的概率为 30,并且将其概率降低到 0,则其他三个方向的概率应各增加 10 个点。
  • 用户应该能够根据概率检索随机方向,而无需关心或需要知道内部概率分布。他们还应该能够修改一个方向的概率,而无需明确管理其他方向的概率。

是否有一个简洁的算法/数据结构解决方案?我现在有一个丑陋的直接方法,但我很想知道这个问题是否有更简洁的解决方案。

【问题讨论】:

    标签: algorithm data-structures


    【解决方案1】:

    为每个方向分配多个点,不必担心它们加起来会达到 100。相反,您可以随时通过将每个点的总数除以所有点值的总和来将点转换为概率。

    例如,假设每个方向有 10 个点。所有四个的总和为 40,因此每个方向的概率为 10/40,即 25%。

    假设向北增加了 10 个点。那么它将是 20,其余的将是 10。现在总数将是 50,给北的概率为 20/50 或 40%,而其他三个概率分别为 10/50 或 20%。

    【讨论】:

    • 也称为规范化:-)
    猜你喜欢
    • 2011-09-17
    • 2011-04-20
    • 2011-02-08
    • 1970-01-01
    • 2017-10-31
    • 2016-11-06
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多