首页 > 解决方案 > 有没有办法随机化网格中的每个单元格?

问题描述

我一直在尝试康威生命游戏问题,因为它是学校的延伸,但我不知道如何随机化网格中的每个单元格(活着的,死的,用 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 东西,我懒得改变它

标签: python

解决方案


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

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

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


推荐阅读