如何在Python中生成具有重复数字的随机列表

如何在Python中生成具有重复数字的随机列表,python,list,Python,List,所以我几天前才开始用Python编程。现在,我正在尝试制作一个程序,生成一个随机列表,然后选择重复的元素。问题是,我的列表中没有重复的数字 这是我的代码: import random def generar_listas (numeros, rango): lista = [random.sample(range(numeros), rango)] print("\n", lista, sep="") return def texto_1 (): texto =

所以我几天前才开始用Python编程。现在,我正在尝试制作一个程序,生成一个随机列表,然后选择重复的元素。问题是,我的列表中没有重复的数字

这是我的代码:

import random

def generar_listas (numeros, rango):
    lista = [random.sample(range(numeros), rango)]
    print("\n", lista, sep="")
    return
def texto_1 ():
    texto = "Debes de establecer unos parámetros para generar dos listas aleatorias"
    print(texto)
    return

texto_1()
generar_listas(int(input("\nNumero maximo: ")), int(input("Longitud: ")))

例如,我选择20和20作为random.sample,它会生成一个从0到20的列表,但处于随机位置。我想要一个随机数的列表,并复制

你想要的相当简单。您希望生成包含一些重复项的随机数字列表。如果你使用像numpy这样的东西,这样做很容易

  • 生成0到10的列表(范围)
  • 从该列表中随机抽样(替换)
像这样:

import numpy as np
print np.random.choice(10, 10, replace=True)
[5 4 8 7 0 8 7 3 0 0]
结果:

import numpy as np
print np.random.choice(10, 10, replace=True)
[5 4 8 7 0 8 7 3 0 0]
如果您想对列表进行排序,只需使用内置函数“sorted(list)”

如果不想使用numpy,可以使用以下选项:

print [random.choice(range(10)) for i in range(10)]
[7, 3, 7, 4, 8, 0, 4, 0, 3, 7]

random.randrange就是你想要的

>>> [random.randrange(10) for i in range(5)]
[3, 2, 2, 5, 7]

您可以从具有重复项的容器中取样。假设python2.x:
random.sample(范围(20)+范围(20),20)
谢谢你的回答。用随机模块是不可能的?非常感谢。citaret的答案也很有效,但我会选择这个,因为你提到了numpy。没问题@Eduard