Python 随机大小的随机矩阵,随机大小的元素总计为最大大小

Python 随机大小的随机矩阵,随机大小的元素总计为最大大小,python,Python,我一直在努力制作一个随机矩阵生成器,用随机大小的元素填充它 import random from collections import deque rand_max = random.randint(1,10) matrix = [] print("Max:",rand_max) for num_y in range(random.randint(1,rand_max)): line_length = 0 x = [] print("Row:",num_y) fo

我一直在努力制作一个随机矩阵生成器,用随机大小的元素填充它

import random
from collections import deque
rand_max = random.randint(1,10)
matrix = []
print("Max:",rand_max)
for num_y in range(random.randint(1,rand_max)):
    line_length = 0
    x = []
    print("Row:",num_y)
    for num_x in range(random.randint(1,(rand_max - line_length))):
        if line_length != rand_max:
            partial = []
            for num_z in range(random.randint(1, (rand_max - line_length))):
                partial.append(0)
                line_length += 1
            x.append(partial)
            continue
    print("Line is:",x)
    print("Length is:", line_length)
    matrix.append(x)
#print(matrix)
start_x = random.randint(0, len(matrix))
start_y = random.randint(0, start_x)
print("Your start location is: ","(",start_x,",",start_y,")")
next_moves = deque()
所以它在大多数情况下都能完成我希望它完成的任务,但有时它会提供一个max_length,我已经做了一段时间了,我有点不知道为什么

下面是一个错误输出的示例:

最高:6

行:0

行是:[[0,0,0,0,0,0],[0]]

长度为:6

行:1

行是:[[0,0,0,0],[0,0]]

长度为:6

世界其他地区:2

行是:[[0,0,0],[0,0,0]]

长度为:6

世界其他地区:3

行是:[[0],[0,0,0,0,0,0]]

长度为:6

第4排

行是:[[0],[0,0,0],[0]]

长度为:5

世界其他地区:5

行是:[[0,0,0,0,0,0],[0]]

长度为:6

您的起始位置是:(1,1)


有时我的行会留下空格,我不知道为什么

线的长度是随机生成的。它是几个随机数的总和(实际上是随机数的一个随机数)。这通常是最大值,因为当你到达那里时,你停止生成更多,但没有什么能阻止你得到更少,除了低概率。我理解你的意思,感觉解决方案不远了,我只是很难看到在哪里实现你所说的。我很感激你的指导,你想要什么并不明显。如果希望所有行都具有最大长度,我建议添加最后一项,其中包含
rand\u max-line\u length
元素。但请注意,通过强制这样做,您可能会稍微扭曲随机分布。这对你来说可能重要,也可能不重要(你的代码已经产生了一个相当扭曲的分布)。谢谢你,我能够通过在循环结束时执行检查来纠正它。不,在这一点上,级别或随机化对我来说不重要。我只是想爬过一个格子,记录下我的动作。我刚刚开始我的编程冒险,这是我想做的事情。我希望有更多的经验能变得更复杂。