我必须生成可能的每个字符串的列表(给定要从中挑选字符的特定字符串),我想出的第一个方法是:
public String getRandomLetters(Integer size, String range){
String word = "";
Random r = new Random();
for (int i = 0; i < size; i++) {
word += range.charAt(r.nextInt(range.length()));
}
return word;
}
像这样使用:getR
从 for random.shuffle中获得一个列表,如果其元素为:
注意到即使对于相当小的len(x),x的排列总数大于大多数随机数生成器的周期;这意味着一个长序列的大多数排列永远无法产生。
这是否适用于任何语言,因为这种限制似乎依赖于随机数生成器?是否可以编写一个函数来生成任意长的列表的任何可能的排列?
我的程序需要在列表中包含2和0的所有组合。例:[0,0,0,2,0,0,2,0,0.]。在每个子列表中,总是有n^2元素,其中有n-1乘以2s。所以我应该有n^2!/((n^2-n)!*(n-1)!)结果。
问题是我的代码首先计算所有排列,然后删除重复的排列。因此,对于n=4,将有16个!子列表,使我的计算机崩溃。我怎么才能解决这个问题?(至少需要处理n= 8)
以下是代码:
servers = n*n #number of elements in each sublist
infected = n - 1 #number of 2s
grid = [ 0 for a in range(s
假设我有一个任意长度k的Python列表。现在,假设我想要一个n的随机样本,(其中n <= k!) 这个列表的不同的排列。我很想尝试:
import random
import itertools
k = 6
n = 10
mylist = list(range(0, k))
j = random.sample(list(itertools.permutations(mylist)), n)
for i in j:
print(i)
但是,自然地,当k变得太大时,这段代码变得非常慢。考虑到我可能正在寻找的n排列的数量相对于排列的总数相对较少,计算所有的排列是不必要的。然而,重
我编写了一个简单的算法来返回字符串的所有可能排列的列表,如下所示:
def get_permutations(sequence):
'''
Enumerate all permutations of a given string
sequence (string): an arbitrary string to permute. Assume that it is a
non-empty string.
Returns: a list of all permutations of sequence
'''
if len(sequence)
我有一个使用itertools置换的问题解决方案,但对于比我的示例更大的用例,它的计算代价很高。
基本上,我从一个句子作为字符串开始,简化如下:
a = "a b c d"
通过一个不同的过程,我得到了一个字符串的子集列表,例如:
suba = ["d","c d","b c d","a b","b c","a b c","a"]
我想要的结果是来自suba的组合列表,这些组合可以连接成一个,例如:
[('a b', 'c d'), (