"""Generation of unique random list of size n
"""
from random import sample
def unique_lst(n):
return sample(range(10, 100), n) # return a sample of lst (unique lst)
# print(unique_lst(10))
"""
Generation of non-unique 1d_lst
- Function takes in 3 parameters (that has been defaulted)
- If you are looking to generate unique lsts...
...you might want to use random.sample() on a lst of numbers...
...such as list(_ for _ in range(10))
"""
from random import randint
def nu_rand1d(r = 10, low = 11, high = 99): # r is range, nu means non-unique
return [randint(low, high) for num in range(r)]
"""
- Note that randint is inclusive
e.g. If x = randint(10, 100), 10 <= x <= 100
- If you prefer, you can use randrange which is exclusive like range()
e.g. If x = randrange(10, 100), 10 <= x <= 99
"""
"""Generation of non-unique 1d_lst and 2d_lst
- Function takes in a list of info about the non-unique list
- You can also import randint from random.
- Note that randint is inclusive and randrange is exclusive.
- If you are looking to generate unique lsts...
...you might want to use random.sample() on a lst of numbers.
"""
from random import randrange
dft = [10, 10, 100, 10] # dft = default (range, low, high, row)
def rand_1d(info = dft[:-1]):
r, low, high = info # r: range
return [randrange(low, high) for num in range(r)]
def rand_2d(info = dft):
*info_1d, rows = info
return [rand_1d(info_1d) for i in range(rows)]
## Test
randlst_gen = {
"rand_1d": rand_1d,
"rand_2d": rand_2d
}
r1, r2 = randlst_gen.values() # get the functions
# #function 1
# print("rand_1d --------------------------------------------------")
# print(f"default: {r1()}")
# print(f"rand: {r1([5, 3, 234])}")
# print()
# # function 2
# print("rand_2d --------------------------------------------------")
# print("default:")
# for row in r2():
# print(row)
# print()
# print("rand:")
# for row in r2([8, 11, 30, 5]):
# print(row)