如何从python中的一组字符生成随机词

时间:2018-09-16 11:33:28

标签: python

我正在寻找从python中的一组字符生成随机单词列表的方法。 问题出在这里:-

它的生成方式是:- a a a ......等等

我想添加随机函数,以便它使用相同的字母随机化来生成相同的长度,例如: a15bef f45acd 9bbac0 ......等等

长度相同但随机的外观。

如何向其中添加随机函数?

#Code
import itertools

chrs = 'abcdef0123456789' # Change your required characters here
n = 6 # Change your word length here

for xs in itertools.product(chrs, repeat=n):
   print(''.join(xs))

请帮助我解决它。

4 个答案:

答案 0 :(得分:1)

您可以通过random.choice

import random
chrs = 'abcdef0123456789'
n = 6
result = ''.join(random.choice(chrs) for _ in range(n))

答案 1 :(得分:0)

''.join(random.choice(‘abcdef0123456789’) for _ in range(N))

这里有一个更安全的加密选项,下面的示例将使用所有小写字母和数字生成随机字符串

''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(N))

答案 2 :(得分:0)

itertools.product将生成所有可能的值。相反,您要从n中选择chrs个随机字符并将它们连接起来:

import random

chrs = 'abcdef0123456789' # Change your required characters here
n = 6 # Change your word length here

print(''.join(random.choices(chrs, k=5)))

答案 3 :(得分:0)

我用这样的东西

import random
def generateAWord (length):
    i = 0
    result = ""
    while i < length:
        letter = chr(33 + int(93 * random.random()))
        result += letter
        i +=1
    return result
chr内部的

33是您想要的第一个ASCII十进制(33代表{!})。 random.random()返回范围[0.0,1.0]中的下一个随机浮点数,因此它乘以0.0-1.0乘以93(例如0.1732 * 93)将得到16,1076(并将其强制转换为int,因此它将以16结尾)。因此93表示从所需的起始ascii十进制数(在这种情况下为33)到所需的最大ascii十进制数(在这种情况下33 + 93为126,即ascii十进制中的{〜})的最大值。

然后chr会将结果转换为char。