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