有没有一种方法可以随机化网格中的每个单元格?

时间:2020-08-19 02:25:58

标签: python

我一直在尝试Conways的“生命游戏”问题,因为它是学校的延伸,但我无法弄清楚如何随机化网格中的每个单元(活着,死了,以L和D表示它们)。 一些变量只在后面(开始时使用) 到目前为止,这是我的代码:

import random
import math

generations = 0
liveCellCount = 0
deadCellCount = 0
cellState = "LD"

width = 20
height = 20
grid = []
row = []
state = random.choice(cellState)
p = 1

for i in range(width):
    row.append(state)
for i in range(height):
    grid.append(row)


while p < 2:
    for i in range(len(grid)):
        print(grid[i])
    p = p + 1

也忽略了我的p = 1东西,我不愿意更改它

2 个答案:

答案 0 :(得分:0)

我看到您正在尝试随机化网格中每个单元的状态。我们发现您的代码存在以下问题。

state = random.choice(cellState)

for i in range(width):
    row.append(state)

您选择了一次随机状态,然后将其重新用于网格中的每个单元格。考虑将随机选择函数放入for循环中,以便为每个单元格选择一个新的循环。

for i in range(height):
    grid.append(row)

您还在网格中的每一行使用相同的列表。

这是我建议的解决方案:

import random

width = 20
height = 20
grid = []

for i in range(height):
    row = []
    for j in range(width):
        state = random.choice("LD")
        row.append(state)
    grid.append(row)

# Print the grid below

请注意,将为网格中的每一行创建一个新列表。这是为了确保每一行都可以不同,这与您在整个网格中重复使用同一行对象的示例不同。

答案 1 :(得分:0)

尝试一下

import random 
import math 
generations = 0
liveCellCount = 0 
deadCellCount = 0 
cellState = "LD" 
width = 20 
height = 20 
grid = [] 
row = [] 
state = random.choice

for i in range(width): 
    row.append(state(cellState))
    for i in range(height): 
        grid.append(row) 
print(grid)