【问题标题】:How to insert a value in 2D random lists?如何在二维随机列表中插入一个值?
【发布时间】:2020-09-25 08:18:19
【问题描述】:

我正在尝试用 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

【问题讨论】:

标签: python


【解决方案1】:

因为你总共有 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.]]

【讨论】:

    【解决方案2】:

    这将产生一个雷区:

    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]])
    

    【讨论】:

      【解决方案3】:
      foo = np.array(list(range(64))
      bar = numpy.random.choice(foo, 10)
      baz = np.zeros(64)
      baz[bar] = 1000
      baaz = reshape((8, 8))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-23
        • 1970-01-01
        • 2014-08-09
        • 2021-02-28
        • 2014-02-14
        • 2014-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多