Skip to content
Related Articles

Related Articles

Python program to randomly create N Lists of K size

View Discussion
Improve Article
Save Article
  • Last Updated : 27 Jan, 2021
View Discussion
Improve Article
Save Article

Given a List, the task is to write a Python program to randomly generate N lists of size K.

Examples:

Input : test_list = [6, 9, 1, 8, 4, 7], K, N = 3, 4

Output : [[8, 7, 6], [8, 6, 9], [8, 1, 6], [7, 8, 9]]

Explanation : 4 rows of 3 length are randomly extracted.

Input : test_list = [6, 9, 1, 8, 4, 7], K, N = 2, 3

Output : [[7, 6], [7, 9], [1, 9]]

Explanation : 3 rows of 2 length are randomly extracted.

Method 1 : Using generator + shuffle()

In this, getting random elements is done using shuffle(), and yield with slicing is used to get K size of shuffled list.

Python3




# Python3 code to demonstrate working of
# K sized N random elements
# Using generator + shuffle()
from random import shuffle
  
# get random list 
def random_list(sub, K):
    while True:
        shuffle(sub)
        yield sub[:K]
  
# initializing list
test_list = [6, 9, 1, 8, 4, 7]
  
# initializing K, N 
K, N = 3, 4
               
# printing original list
print("The original list is : " + str(test_list))
  
res = []
# getting N random elements 
for idx in range(0, N):
    res.append(next(random_list(test_list, K)))
  
# printing result
print("K sized N random lists : " + str(res))

Output:

The original list is : [6, 9, 1, 8, 4, 7]
K sized N random lists : [[7, 1, 8], [8, 6, 1], [4, 9, 6], [6, 9, 1]]

Method 2 : Using product() + sample()

In this, all the possible permutations of K elements are extracted using product(), and from that random sampling of N lists are done.

Python3




# Python3 code to demonstrate working of
# K sized N random elements
# Using product() + sample()
from random import sample
import itertools
  
# initializing list
test_list = [6, 9, 1, 8, 4, 7]
  
# initializing K, N 
K, N = 3, 4
               
# printing original list
print("The original list is : " + str(test_list))
  
# get all permutations
temp = (idx for idx in itertools.product(test_list, repeat = K))
  
# get Random N from them
res = sample(list(temp), N)
res = list(map(list, res))
  
# printing result
print("K sized N random lists : " + str(res))

Output:

The original list is : [6, 9, 1, 8, 4, 7]
K sized N random lists : [[1, 1, 1], [6, 9, 4], [8, 7, 6], [4, 8, 8]]

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!