猿问

在python中创建一个没有重复的随机数列表

所以我要做的是为游戏策划者创建一个包含 5 个数字的列表,我想消除所有重复项!问题是代码有时会创建一个包含 3 个数字、4 个或有时 5 个数字的列表,它似乎是随机的。


我还应该提到我们不允许在grandom.sample或random.shuffle中使用


import random


def generatePassword() :

    lis = []

    for i in range(5) :

        #This checks to see if there are duplicate numbers

        r = random.randint(1,9)

        if r not in lis :

            lis.append(r)

        i+=1

    return lis




def main() :

    print(generatePassword())

main()


慕姐8265434
浏览 177回答 3
3回答

白衣非少年

尝试使用带有检查 lis 长度的条件的 while 循环while&nbsp;len(lis)&nbsp;<&nbsp;5:而不是你的 for 循环

潇潇雨雨

numpy.random.permutation如果您正在寻找有效且更快的方法,请使用:import numpy as npyour_list = list(np.random.permutation(np.arange(0,10))[:5])>>> your_list[6, 9, 0, 1, 4]或者,你可以用np.random.choice与replace=False:your_list = list(np.random.choice(np.arange(0,10), 5, replace=False)

忽然笑

该函数random.sample执行您想要的操作:import randomdef generatePassword():&nbsp; &nbsp; numbers = range(0, 9)&nbsp; &nbsp; return random.sample(numbers, 5)def main() :&nbsp; &nbsp; print(generatePassword())main()
随时随地看视频慕课网APP

相关分类

Python
我要回答