如何在二维随机列表中插入值?

2024-04-29 06:55:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python做一艘扫雷艇。现在我尝试在列表中随机插入10枚地雷。请帮我弄清楚

import random
import numpy as np
from random import randint

#assign a value of mines and create 8 x 8 empty array.
mines = 1000
arr1 = np.empty((8,8))

#insert 10 mines into random lists.
z = 1

if z < 11 :
    np.append(arr1, np.array(random.randint[mines]))
    z = z + 1

Tags: fromimportnumpy列表asnprandomarray
3条回答

因为你们一共有64个名额

获取0,63中的随机整数(总计64)

算出x和y

import random
import numpy as np
from random import randint

#assign a value of mines and create 8 x 8 empty array.
mines = 1000
arr1 = np.empty((8,8))
print(arr1)

minesRemaining = 10
while minesRemaining > 0:
    r = randint (0,63)
    i = r//8
    j = r%8
    if arr1[i][j]!=1000:
        arr1[i][j]=1000
        minesRemaining-=1
print(arr1)
[[2.2588207e-316 0.0000000e+000 0.0000000e+000 0.0000000e+000
  0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]
 [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
  0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]
 [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
  0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]
 [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
  0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]
 [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
  0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]
 [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
  0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]
 [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
  0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]
 [0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
  0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000]]
[[1000.    0.    0.    0.    0.    0.    0.    0.]
 [   0.    0.    0. 1000.    0.    0.    0.    0.]
 [1000. 1000.    0.    0.    0.    0.    0.    0.]
 [   0. 1000.    0.    0.    0.    0.    0.    0.]
 [   0.    0.    0.    0.    0.    0. 1000.    0.]
 [   0.    0.    0. 1000.    0.    0.    0.    0.]
 [   0.    0.    0.    0. 1000.    0.    0.    0.]
 [1000.    0.    0.    0. 1000.    0.    0.    0.]]
foo = np.array(list(range(64))
bar = numpy.random.choice(foo, 10)
baz = np.zeros(64)
baz[bar] = 1000
baaz = reshape((8, 8))

这将产生一个雷区:

grid = np.zeros((8, 8), dtype=np.bool)
mask = np.random.choice(grid.size, 10, replace=False)
grid.reshape(-1)[mask] = True

一个示例输出:

>>> grid
array([[False, False, False, False, False,  True, False,  True],
       [False, False, False, False, False, False,  True, False],
       [False,  True, False, False, False, False, False, False],
       [False,  True, False, False, False, False, False, False],
       [False, False, False, False, False, False,  True, False],
       [False, False, False, False, False, False, False, False],
       [False, False, False, False, False, False,  True, False],
       [False,  True,  True, False, False, False,  True, False]])

相关问题 更多 >