Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中进行随机洗牌?_Python_Python 3.x_Random_Shuffle - Fatal编程技术网

如何在Python中进行随机洗牌?

如何在Python中进行随机洗牌?,python,python-3.x,random,shuffle,Python,Python 3.x,Random,Shuffle,我想用Python编写一个脚本,我手上有一个ABDEB的单词。我想把这个单词做成一个数组,然后将单词中的字母混洗,得到不同组合的单词。此外,这些组合可能包含重复的字母,并形成一个列状 BBBED, EEEEA, ADDEA 等等 毕竟,我想把这些单词放到一个文本文件中 我该怎么做 如果您能提供帮助,我将不胜感激。最简单的方法之一是使用random.shuffle函数: 至于将单词写入文件,这是一个相当简单的练习,因此我建议您稍微搜索一下答案,因为有很多方法可以这样做,而且您的说明有点不清楚。根

我想用Python编写一个脚本,我手上有一个ABDEB的单词。我想把这个单词做成一个数组,然后将单词中的字母混洗,得到不同组合的单词。此外,这些组合可能包含重复的字母,并形成一个列状

BBBED, EEEEA, ADDEA

等等

毕竟,我想把这些单词放到一个文本文件中

我该怎么做


如果您能提供帮助,我将不胜感激。

最简单的方法之一是使用random.shuffle函数:

至于将单词写入文件,这是一个相当简单的练习,因此我建议您稍微搜索一下答案,因为有很多方法可以这样做,而且您的说明有点不清楚。

根据文档,这是您的朋友

随机的,随机的。 将序列x移动到位

输出可能看起来像

DBEBA
ABEBD
BABDE
BADEB
BDAEB
DDEEE
ABBBE
ADDDD
BBDDB
AADDB
或者每次都可以从相同的基字符串开始

import random

for i in range(5):
    li = list('ABDEB')
    random.shuffle(li)
    print(''.join(li))
对于带替换的洗牌,您可以实际使用,它将一次性提供所有可能的组合,然后使用从中选择一个元素

从文档中:

itertools.compositions_与_replacementiterable,r 返回输入iterable中元素的r长度子序列,允许单个元素重复多次

random.choiceseq 从非空序列seq返回一个随机元素

输出看起来像

DBEBA
ABEBD
BABDE
BADEB
BDAEB
DDEEE
ABBBE
ADDDD
BBDDB
AADDB

使用random.shuffle。它比简单的算法要快,因为它使用了Fisher-Yates洗牌。这是一场完美的洗牌

您自己的实现可能会在^2时间运行

试试这个

import itertools
x = list('ABDEB')
a=[''.join(p) for p in itertools.product(x, repeat=len(x))]
print(a)
输出:

['AAAAA', 'AAAAB', 'AAAAD', 'AAAAE', 'AAAAB', 'AAABA',...]
要保存到文件,请使用以下命令

import numpy as np
np.savetxt('test.txt', a, delimiter=" ", fmt="%s")

谢谢,那么我如何制作5个以上的单词呢?您可以根据需要制作任意多的组合,我只是运行了5次函数来演示一个示例!是的,我只是改变了射程限制。非常感谢你!最后一个问题是,我还想重复这个字符串中的字母。我应该在代码中添加什么?更新了答案以处理该场景,请检查@MustafaBerkŞenal,如果有任何其他问题,请告诉我!嗨,现在我想做的是:我想保留这个单词中的字母,然后得到一个新的字母字典,并为这个字典中的每个索引分配不同的字母。我想保留这个单词中的字母,然后得到一个新的字母字典,并为这个字典中的每个索引分配不同的字母。我该怎么做?