我需要生成随机数,但每个数字必须与其他数字不同

时间:2017-09-11 17:22:56

标签: python random numbers unique

我在另一个文件中找到了一个函数,让我想起我使用的函数:

app.put_number(row, column, number)

基本上生成一个矩阵,但在第一列中,对于每一行,我需要一个从1到20的随机数,每个数字必须是唯一的,我尝试使用random.randrange()。 例如:

app.put_number(0, 0, random.randrange(1,21))
app.put_number(1, 0, random.randrange(1,21))

但有时它会生成相同的数字,我需要它们中的每一个都不同。

另外我无法使用实际功能搞乱文件,我只能使用if,else,while,for和app.put_number(行,列,数字)

3 个答案:

答案 0 :(得分:0)

如果您使用要完成此任务的特定语言标记问题,将会很有帮助。

然而,从概念上讲;每次生成新数字时都需要检查填充的数组,以确保您没有在数组中插入数字。如果你想得到想象,你甚至可以拥有一组数字并随机选择你将数字放入的数组的索引,有效地将它们“混合”在一起。

答案 1 :(得分:0)

尝试使用Random.sample()。它返回一个范围内的唯一数字 根据下面的文档“要从一系列整数中选择一个样本,请使用range()对象作为参数。对于从大群体中采样,这种方法特别快且节省空间:样本(范围(10000000),k = 60) 。“

https://docs.python.org/3/library/random.html

答案 2 :(得分:0)

一种解决方案是将生成的数字保留在列表中,然后调用随机数生成器,直到它给出一个在已生成的数字列表中不存在的数字。