假设我想在1到100之间生成10个随机数。但是我想从1-10,11-20,21-30等每个数量的集合中随机选择数字。所以它不会像这样出来: 1,7,26,29,51,56,59,89,92,95。 我想随机选择数字: 7,14,22,39,45,58,64,76,87,93 。
我创建了一个代码示例。但我无法弄清楚问题的后期部分。
import random
def getInteger(prompt):
result = int(input(prompt))
return result
range1 = getInteger("Please Enter Initial Range: ")
range2 = getInteger("Please Enter Ending Range: ")
range3 = getInteger("Please Enter the Range size: ")
myList = random.sample(range(range1, range2), range3)
myList.sort()
print ("Random List is here: ", myList)
我是编程新手。我用Google搜索,但没有找到任何解决方案。提前谢谢你们......
答案 0 :(得分:2)
在您的情况下,您需要在0到9之间选择10次随机数,并在每个步骤中添加10个。
import random
random_numbers = []
for i in range(0, 10):
random_number = random.randrange(10) # pick a number between 0-9
random_number += 10*i # add 10 in each iteration
random_numbers.append(random_number)
print(random_numbers)
编辑: 如果你想设置自己的值,这可能有效:
import random
random_numbers = []
begin = 100
end = 200
interval = 10
for i in range(0, round((end-begin)/interval)):
random_number = random.randrange(interval)
random_number += round(interval)*i + begin
random_numbers.append(random_number)
print(random_numbers)
答案 1 :(得分:1)
考虑使用random.choice
和for
循环:
>>> for i in range(1, 100, 10):
... print(random.choice(range(i, i + 10)))
...
10
19
21
34
45
51
68
74
88
98
>>> for i in range(1, 100, 10):
... print(random.choice(range(i, i + 10)))
...
6
14
30
37
50
56
65
79
85
94
答案 2 :(得分:1)
你可以用这个:
import random
start = 1
stop = 100
interval = 10
ran = [random.choice( range(start + i*interval, start + (i+1)*interval-1))
for i in range(len(range(start,stop,interval)))]
print(ran)
说明:
i
从0
到len(...)
中选择start
使用stop
到interval
/ {{1} }
对于此问题,它会返回10
,从i
到0
会产生9
的数字。
random.choic
e使用此i
来计算/填充start
大小的整个数字范围,从stop
到interval
- choice
然后在此子范围中为您的结果列表绘制其中一个数字。
range(start + i*interval, start + (i+1)*interval-1)
# evaluaters to
# i = 0: 1+0, 1+(0+1)*10-1 = 1,10
# i = 1: 1+10, 1+(1+1)*10-1 = 11,20
# etc.
编辑: 这可能会超出上限 - 可以使用
来修复ran = [random.choice( range(start + i*interval,min(stop, start + (i+1)*interval-1))) for i in range(len(range(start,stop,interval)))]
使用min(stop, calculated end)