繁体   English   中英

如何在没有for循环的情况下生成n个随机数

[英]How can I generate n random numbers without a for loop

我想在0-9之间生成4个随机整数。 我可以使用 for循环轻松实现这一点:

digits = [random.randrange(10) for i in range(4)]

假设有可能,我想知道其他方法产生相同的结果,也许没有直接使用for循环。 我正在尝试使用itertools, 不起作用:

digits = itertools.repeat(random.randrange(10), 4)

我的问题的主要目的是让自己暴露于其他方法。 谢谢。

numpy.random.randint(0, 10, size=4)

或者使用itertools

list(map(random.randrange, itertools.repeat(10, 4)))

甚至

list(map(random.randrange, [10]*4))

那么使用发生器和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]

这不是我真正要做的事情,但是因为你想让自己暴露于其他方法,然后利用0-9范围你也可以获得4个这样的整数,如下所示:

map(int, "%04d"%random.randrange(10**4))

它实际上生成一个四位数的字符串,并从中提取数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM