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

6

我几天前开始学习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的列表,但是位置是随机的。我想要一个包含重复随机数字的列表。

你可以从一个包含重复元素的容器中进行抽样。假设使用Python2.x:random.sample(range(20) + range(20), 20) - mgilson
2个回答

10

您需要的很简单。您想生成一个包含一些重复数字的随机数字列表。如果使用类似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]

如果您想让列表有序,只需使用内置函数“sorted(list)”。
sorted([5 4 8 7 0 8 7 3 0 0])
[0 0 0 3 4 5 7 7 8 8]

如果您不想使用numpy,您可以使用以下内容:
print [random.choice(range(10)) for i in range(10)]
[7, 3, 7, 4, 8, 0, 4, 0, 3, 7]

感谢您的答复。使用随机模块无法实现吗? - iMasck
非常感谢。citaret的答案也可以,但我会选择这个,因为你提到了numpy。 - iMasck
没问题 @Eduard - Mohammed Elmahgiubi

2

random.randrange是您所需要的。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接