小编non*_*nya的帖子

从加权集中按权重顺序生成长度 L 的前 N ​​个组合

我有一组带有权重的字母,这给出了它们出现在字符串中的概率:

a - 0.7
b - 0.1
c - 0.3
...
z - 0.01
Run Code Online (Sandbox Code Playgroud)

因此,该词的aaaa概率为0.7*0.7*0.7*0.7 = 0.24。这个词aaac就有概率了0.7*0.7*0.7*0.3 = 0.10。同一单词的所有排列都有相同的概率,因此我们只需要担心组合。

我想按概率顺序生成第一个N长度唯一的字符串L(例如,这里有 4 个字母,长度为 4,应该是aaaa, aaac, aacc, aaab, accc, aabc,cccc等)。

假设生成所有组合及其概率并按权重排序的强力方法在这里是不可能的。该算法(如果存在)必须能够适用于任何集合大小和任何长度的字符串(例如,具有加权概率的所有 256 个字节、1024 长度的字符串,生成第一个万亿。)

sorting algorithm combinations permutation

5
推荐指数
1
解决办法
185
查看次数

标签 统计

algorithm ×1

combinations ×1

permutation ×1

sorting ×1