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

How can I generate n random numbers without a for loop

我正在尝试生成 4 个介于 0-9 之间的随机整数。 我可以很容易地实现这个 使用 一个 for-loop:

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))

这不是我真正会做的事情,但既然你想接触更多的方法,那么利用 0-9 范围你也可以获得 4 个这样的整数,如下所示:

map(int, "%04d"%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]