首先,实际上存在比标题中所述更多的限制。普茨读后。如何以随机顺序显示词典中的项目,但没有两个相邻项目相同
说,我有一个dictionary<char,int>
其中键作为项目,值意味着输出中出现的次数。 (有点像加权但没有替换) 例如( '一个',2)( 'B',3)( 'C',1)
一个可能的输出是 'babcab'
我想到的实施了以下的方法。
- 建立一个包含(累计权重,字符)作为其条目的新列表。
- 随机从列表中选择一个项目,
- 重新计算累积权重,还设置了最近绘制的项目重达0.1
- 重复。
在某种程度上可能会出现类似这样的情况:'bacab'已生成,但不能进一步生效(因为只有'b'离开,但权重设置为0,因为不允许立即重复)。在这种情况下,我放弃了所有的结果,并从一开始就重新开始。
有没有其他的好方法?
另外,如果我跳过“设置相应的权重为0”的过程,而不是我拒绝任何不可行的解决方案。例如我已经有了'bab'。在下一个选择中,我得到'b',然后我重做绘制过程,直到我得到不是'b'的东西,然后继续。这表现更好吗?
1.生成所有可能的排列。 2.删除所有不符合要求的排列。 3.从剩余的排列中选择一个随机排列。 – dtb
它是如何“随机”呢?建筑W/O随机可以接受吗? –
其实我做某件事情状( 'A',20),( 'B',23),...,( 'J',34),并且恐怕产生所有可能的排列是不平凡的。 – colinfang