【发布时间】:2020-07-17 12:07:51
【问题描述】:
对于每个项目,我有 0 和 1 之间的 2 个选择,其中我将有 N 个元素一个接一个地排序,生成一个独特的组合。
类似这样的东西(序列长度=10):
0, 1, 0, 1, 0, 1, 0, 1, 0, 1
0, 0, 0, 1, 0, 1, 0, 1, 0, 1
0, 1, 1, 1, 0, 1, 0, 1, 0, 1
1, 1, 1, 1, 0, 1, 0, 1, 0, 1
如您所见,这些都是独特的排列。我将有 10000 个这样的排列(例如)。但关键信息是我不需要所有的排列,而是只保存一组有限的排列,理想情况下是无序的,所以它有点“随机”。
我目前的解决方案是生成 0 到 1 之间的随机数,并将它们附加到一个数组中,最多为 N 个元素。然后把这个数组变成一个字符串,如果这个字符串还没有添加到我上面的列表中,那么添加这个,否则重复相同的步骤以生成不同的排列。
这意味着使用 while 循环。
有没有更聪明或更优雅的方法来做到这一点?
【问题讨论】:
-
我不确定您是否会在发布后的几秒钟内对以下答案进行投票,但是阅读此内容的人应该知道仅链接的答案不保证“此答案很有用”投票跨度>
-
请注意,对于长度为 10 的序列,您将只有 2^10 = 1024 个唯一组合。但我想这些只是示例值
-
谢谢,是的,我有10多个项目,我只是想举一些简单的例子。
标签: python random combinations sequence combinatorics