我在打印随机数列表时看到了多个线程,但没有看到具有我特定要求的线程,我似乎无法做到正确。
我想开发一个代码,该代码将在某个时间间隔内生成一个随机数列表,其中列表是一个随机长度,单独一个区间,同样,重复项需要在此列表中。我也希望在一行中完成。
我想出了一个非常好的尝试使用random.sample,但是样本不包含重复项,并且它也不会让我使列表中的数字范围大于列表本身。 (例如,它不能生成5个数字长的列表,但数字大于1到5。)
>> a = random.sample(range(10), random.randint(1,10,1))
>> print(a)
[6, 3, 4, 2, 5, 7, 8]
为了摆脱没有重复的问题,以及大于长度问题的数字,我尝试了这个,但我不能使范围随机,否则我得到一个TypeError:
>> a = [random.randint(1,20) for x in range(1, 10)]
>> print(a)
[8, 7, 20, 20, 5, 18, 9, 3, 19]
以下是我尝试随机范围的版本:
>> a = [random.randint(1,20) for x in random.randrange(1,10)]
>> print(a)
Traceback (most recent call last):
File "<ipython-input-258-b3a6b0409007>", line 1, in <module>
a = [random.randint(1,20) for x in random.randrange(1,10)]
TypeError: 'int' object is not iterable
不太清楚为什么我不能在某个时间间隔内创建一个随机范围,但我是初学者,所以我确定我只是遗漏了一些东西。
答案 0 :(得分:1)
random.randrange(1,10)
返回一个整数。您可以将它用作range
函数的上限,如下所示:
a = [random.randint(1,20) for x in range(1, random.randrange(1,10))]