I am trying to generate 4 random integers between 0-9. I can easily achieve this using a for-loop:
digits = [random.randrange(10) for i in range(4)]
Assuming it is possible, I was wondering about other ways to yield the same result, perhaps without directly using a for-loop. I was experimenting with itertools and this didn't work:
digits = itertools.repeat(random.randrange(10), 4)
The main purpose of my question is to expose myself to additional methods. Thanks.
numpy.random.randint(0, 10, size=4)
or to use itertools
list(map(random.randrange, itertools.repeat(10, 4)))
or even
list(map(random.randrange, [10]*4))
                        What about using a generator and a 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 a 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]
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With