我试图在0-9之间生成4个随机整数。 我可以轻松实现使用一个for循环:
digits = [random.randrange(10) for i in range(4)]
假设有可能,我想知道其他方法产生相同的结果,也许没有直接使用for循环。我正在尝试使用itertools和这没有工作:
digits = itertools.repeat(random.randrange(10), 4)
我的问题的主要目的是让自己接触其他方法。 感谢。
答案 0 :(得分:9)
numpy.random.randint(0, 10, size=4)
或使用itertools
list(map(random.randrange, itertools.repeat(10, 4)))
甚至
list(map(random.randrange, [10]*4))
答案 1 :(得分:1)
使用生成器和while loop
怎么样?
from random import randrange
def rand(val, repeat=4):
j = 1
while j <= repeat:
yield randrange(val)
j += 1
final = list(rand(10))
输出:
[2, 6, 8, 8]
另外,使用recursion
:
from random import randrange
def rand(val, repeat=4, b=1, temp=[]):
if b < repeat:
temp.append(randrange(val))
return rand(val, b= b+1, temp=temp)
else:
return temp + [randrange(val)]
final = rand(10)
print(final)
输出:
[1, 9, 3, 1]
答案 2 :(得分:0)
这不是我真正要做的事情,但是既然你想让自己暴露于其他方法,那么利用0-9范围,你也可以获得4个这样的整数:
map(int, "%04d"%random.randrange(10**4))
它实际上会生成一个四位数的字符串,并从中提取数字。