我需要创建一个 8x8 网格,并将 10 个硬币分布在网格上的随机位置。我面临的问题是 randint 函数有时会生成相同的随机坐标,因此只生成 9 或 8 个硬币并放置在网格上。我怎样才能确保这种情况不会发生?干杯:)这是我到目前为止的代码:
from random import randint
grid = []
#Create a 8x8 grid
for row in range(8):
grid.append([])
for col in range(8):
grid[row].append("0")
#create 10 random treasure chests
#problem is that it might generate the same co-ordinates and therefore not enough coins
for coins in range(10):
c_x = randint(0, len(grid)-1)
c_y = randint(0, len(grid[0])-1)
while c_x == 7 and c_y == 0:
c_x = randint(0, len(grid)-1)
c_y = randint(0, len(grid[0])-1)
else:
grid[c_x][c_y] = "C"
for row in grid:
print(" ".join(row))
我已经包括了一段时间/其他 - 因为网格的左下角一定不能有硬币
您只有 64 个案例,因此您可以将所有坐标生成为元组 (x,y),然后您可以使用 random.sample 直接拥有 10 个唯一元素,因此您不必检查或重绘。
import random
from itertools import product
g = [['0' for _ in range(8)] for _ in range(8)]
coord = list(product(range(8), range(8)))
for coins in random.sample(coord, 10):
g[ coins[0] ][ coins[1] ] = 'C'
for row in g:
print(' '.join(row))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)