gpt4 book ai didi

python - "sample larger than population"in random.sample python

转载 作者:太空狗 更新时间:2023-10-29 18:25:41 26 4
gpt4 key购买 nike

为自己创建一个简单的通行证生成器,我注意到如果我希望我的人口只有数字(0-9),总共有 10 个选项,如果我希望我的长度超过 10,它不会使用更多的数字然后一次并返回“样本大于总体”错误。

是否可以维护代码,但添加/减少代码行使其工作?还是我必须使用随机选择?

import string
import random

z=int(raw_input("for: \n numbers only choose 1, \n letters only choose 2, \n letters and numbers choose 3, \n for everything choose 4:"))

if z==1:
x=string.digits
elif z==2:
x=string.letters
elif z==3:
x=string.letters+string.digits
elif z==4:
x=string.letters+string.digits+string.punctuation
else:
print "die in a fire"

y=int(raw_input("How many passwords would you like?:"))
v=int(raw_input("How long would you like the password to be?:"))

for i in range(y):
string=""
for n in random.sample(x,v):
string+=n
print string

类型

最佳答案

random.sample()目的是随机选取输入序列的一个子集,而不是再选取任何一个元素不止一次。如果您的输入序列没有重复,您的输出也不会。

不是在寻找一个子集;您想要从输入序列中随机选择一个,重复多次。元素可以多次使用。为此,在循环中使用 random.choice():

for i in range(y):
string = ''.join([random.choice(x) for _ in range(v)])
print string

这将创建一个长度为 v 的字符串,其中来自 x 的字符可以多次使用。

快速演示:

>>> import string
>>> import random
>>> x = string.letters + string.digits + string.punctuation
>>> v = 20
>>> ''.join([random.choice(x) for _ in range(v)])
'Ms>V\\0Mf|W@R,#/.P~Rv'
>>> ''.join([random.choice(x) for _ in range(v)])
'TsPnvN&qlm#mBj-!~}3W'
>>> ''.join([random.choice(x) for _ in range(v)])
'{:dfE;VhR:=_~O*,QG<f'

关于python - "sample larger than population"in random.sample python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com