Pyt*_*New 7 python random list
我是Python的新手,在创建随机列表时遇到了一些问题.
我正在使用random.sample(range(x, x), y)
.
我希望得到4个具有唯一编号的列表,从1-4开始,所以我一直在使用它
a = random.sample(range(1, 5), 4)
b = random.sample(range(1, 5), 4)
c = random.sample(range(1, 5), 4)
d = random.sample(range(1, 5), 4)
Run Code Online (Sandbox Code Playgroud)
所以我举个例子
a = 1, 3, 2, 4
b = 1, 4, 3, 2
c = 2, 3, 1, 4
d = 4, 2, 3, 1
Run Code Online (Sandbox Code Playgroud)
如何才能使列也是唯一的?
也许最简单的方法是创建一个有效的矩阵,然后打乱行,然后打乱列:
import random
def random_square(U):
U = list(U)
rows = [U[i:] + U[:i] for i in range(len(U))]
random.shuffle(rows)
rows_t = [list(i) for i in zip(*rows)]
random.shuffle(rows_t)
return rows_t
Run Code Online (Sandbox Code Playgroud)
用法:
>>> random_square(range(1, 1+4))
[[2, 3, 4, 1], [4, 1, 2, 3], [3, 4, 1, 2], [1, 2, 3, 4]]
Run Code Online (Sandbox Code Playgroud)
这应该能够以相同的概率创建任何有效的矩阵。经过一些阅读后,这似乎仍然存在偏见,尽管我还没有完全理解为什么。