Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 如何防止随机化数字时的重复? 来自随机导入randint def随机_数(): 返回randint(1,10) rn1=随机数() rn2=随机数() 当rn2==rn1时: rn2=随机数() rn3=随机数() 当rn3==rn1或rn3==rn2时: rn3=随机数() rn4=随机数() 当rn4==rn1或rn4==rn2或rn4==rn3时: rn4=随机数() rn5=随机数() 当rn5==rn1或rn5==rn2或rn5==rn3或rn5==rn4时: rn5=随机数()_Python_Algorithm - Fatal编程技术网

Python 如何防止随机化数字时的重复? 来自随机导入randint def随机_数(): 返回randint(1,10) rn1=随机数() rn2=随机数() 当rn2==rn1时: rn2=随机数() rn3=随机数() 当rn3==rn1或rn3==rn2时: rn3=随机数() rn4=随机数() 当rn4==rn1或rn4==rn2或rn4==rn3时: rn4=随机数() rn5=随机数() 当rn5==rn1或rn5==rn2或rn5==rn3或rn5==rn4时: rn5=随机数()

Python 如何防止随机化数字时的重复? 来自随机导入randint def随机_数(): 返回randint(1,10) rn1=随机数() rn2=随机数() 当rn2==rn1时: rn2=随机数() rn3=随机数() 当rn3==rn1或rn3==rn2时: rn3=随机数() rn4=随机数() 当rn4==rn1或rn4==rn2或rn4==rn3时: rn4=随机数() rn5=随机数() 当rn5==rn1或rn5==rn2或rn5==rn3或rn5==rn4时: rn5=随机数(),python,algorithm,Python,Algorithm,我已经为这段代码挣扎了一段时间了。我试图让程序随机生成5个数字。问题是程序可能会生成相同的数字两次。我正在努力确保算法生成的5中没有重复的数字。但是,该代码仍然打印重复项。你知道我做错了什么吗?你可以将每个随机数添加到一个列表中,然后检查该列表,看看它是否已经生成: numbers = [] while len(numbers) < 5: n = random_number() if n not in numbers: numbers += [n] num

我已经为这段代码挣扎了一段时间了。我试图让程序随机生成5个数字。问题是程序可能会生成相同的数字两次。我正在努力确保算法生成的5中没有重复的数字。但是,该代码仍然打印重复项。你知道我做错了什么吗?

你可以将每个随机数添加到一个列表中,然后检查该列表,看看它是否已经生成:

numbers = []
while len(numbers) < 5:
    n = random_number()
    if n not in numbers:
        numbers += [n]
number=[]
而len(数)<5:
n=随机数()
如果n不是数字:
数字+=[n]

请注意,虽然此方法简单易懂,但当您需要原始数字集的一大个子集时,它不是非常有效,例如,尝试从数字1到1000000中获取1000000个数字需要很长时间,因为尝试已添加到列表中的数字。

我认为最简单的方法是使用:

这不需要更换就可以进行采样,这似乎是您想要的


请注意,
random.sample(pop,k)
从总体
pop
(列表或其他)中选择一个大小为
k
的样本,并且
范围(a,b)
的范围是
a您可以使用内置的numpy功能:

import numpy as np
np.random.choice(10,5)
。请注意,
choice
有一个
replacement
关键字,可以在带替换和不带替换的采样之间切换,如下所示:

np.random.choice(10, 5, replace=False)
请注意,所有这些都依赖于
np.arange
来构建要从中采样的数组,因此您可以从
[0,1,…,9]
中采样-如果您想从1-10中采样,可以执行以下操作:

np.random.choice(range(1,11), 5, replace=False

@他们想要10以下的5个数字,而不是随机顺序的1到5。值得注意的是,您可以使用
random.sample
,类似于
random.sample(范围(1,10),5)这样的工具干净地做到这一点
。你可以先将数字1洗牌到10,然后再从顶部处理5。洗牌一组独特的项目,然后逐个弹出你的样本。有没有理由投反对票?
np.random.choice(range(1,11), 5, replace=False
from random import randint

def random_numbers():
    return randint(1,10)

def main():
    my_list = []
    for i in range(10):
        value = random_numbers()
        if value in my_list:
            continue
        else:
            my_list.append(value)
    print(my_list)

main()