user1821176
user1821176

Reputation: 1191

generating multiple 1-d arrays from randomizing an array

I have an array of values

d = [1,2,3,4,.....100]

I am wondering how could I create several 1-D arrays (3,20 or 100) using

random.shuffle(d) 

in a single loop?

Upvotes: 0

Views: 45

Answers (2)

Martijn Pieters
Martijn Pieters

Reputation: 1122222

Use random.sample() instead, specifying a size:

sizes = (3, 20, 100)

random_lists = [random.sample(d, size) for size in sizes]

Now random_lists contains 3 randomized lists, picked from d, with 3, 20 and 100 elements respectively.

If you need a number of shuffled lists with the same length and elements as d, use random.sample() still:

random_lists = [random.sample(d, len(d)) for _ in range(3)]

Now random_lists consists of 3 lists of 100 elements, each a shuffled copy of d. From the random.sample() documentation:

Returns a new list containing elements from the population while leaving the original population unchanged. The resulting list is in selection order so that all sub-slices will also be valid random samples.

Upvotes: 1

Elias Zamaria
Elias Zamaria

Reputation: 101063

import copy, random

result = []
d = range(1, 101)
for i in xrange(100):
    result.append(copy.copy(d))
    random.shuffle(result[-1])

Upvotes: 1

Related Questions