相关疑难解决方法(0)

从具有加权概率的列表中随机选择

我有一个N个元素的数组(表示给定字母表的N个字母),并且数组的每个单元格都包含一个整数值,该整数值表示该字母的给定文本中出现的次数.现在我想根据给定约束的出现次数随机选择字母表中所有字母的字母:

  • 如果字母具有正(非零)值,那么它总是可以由算法选择(当然,概率更大或更小).

  • 如果字母A的值高于字母B,则必须更可能由算法选择.

现在,考虑到这一点,我想出了一个可以完成这项工作的简单算法,但我只是想知道是否有更好的事情要做.这似乎是非常基础的,我认为可能有更聪明的事情要做,以便更有效地实现这一目标.这是我想的算法:

  • 添加阵列中的所有频率.将其存储在SUM中
  • 选择从0到SUM的随机值.将其存储在RAN中
  • [while] RAN> 0,从第一个开始,访问数组中的每个单元格(按顺序),并从RAN中减去该单元格的值
  • 最后访问的单元格是选定的单元格

那么,还有比这更好的事情吗?我错过了什么吗?

我知道大多数现代计算机可以如此快速地计算这个,我甚至不会注意到我的算法是否效率低,所以这更像是一个理论问题而不是实际问题.

我更喜欢解释的算法,而不仅仅是答案的代码,但如果您更愿意在代码中提供答案,我对此没有任何问题.

language-agnostic random algorithm letter alphabet

12
推荐指数
2
解决办法
5356
查看次数

标签 统计

algorithm ×1

alphabet ×1

language-agnostic ×1

letter ×1

random ×1