How can I generate n random numbers without a for loop

I am trying to generate 4 random numbers between 0-9. I can easily achieve this using the for loop:

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

Assuming this is possible, I wondered about other ways to get the same result, perhaps without using the for loop directly. I experimented with itertools and this did not work:

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

The main purpose of my question is to expose myself to additional methods. Thanks.

+6
source share
3 answers
numpy.random.randint(0, 10, size=4)

or use itertools

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

or even

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

How about using a generator and 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))

Output:

[2, 6, 8, 8]

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

Output:

[1, 9, 3, 1]
+1

, , , , 0-9, 4 :

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

In fact, it generates a four-digit string and extracts numbers from it.

0
source

All Articles