You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python random库优雅地在扫雷二维方阵中放置10个不重复地雷?

优雅实现扫雷布雷方案

直接用random.sample()就能完美解决你的问题,不用循环试错,代码简洁还能保证10个地雷位置绝对不重复,思路如下:

  • 把二维棋盘的所有格子转换成一维索引:比如n×n的棋盘,总共有n*n个格子,索引从0到n*n-1
  • 用random.sample()从这些索引里随机挑选10个不重复的样本
  • 把选中的一维索引转回到二维坐标:行号 = 索引 // n,列号 = 索引 % n
  • 最后把这些坐标对应的棋盘位置设为1即可

完整代码示例

import random

# 获取用户输入的棋盘尺寸
n = int(input("请输入正方形棋盘的尺寸:"))

# 初始化全0的n×n棋盘
board = [[0 for _ in range(n)] for _ in range(n)]

# 生成10个不重复的一维索引
mine_indices = random.sample(range(n * n), 10)

# 给棋盘布雷
for idx in mine_indices:
    row = idx // n
    col = idx % n
    board[row][col] = 1

为什么这个方案更优雅?

  • 完全避免了「随机选位置→判断是否已布雷→重复操作」的繁琐逻辑,random.sample()内置就保证了样本的唯一性
  • 代码行数少,逻辑清晰,可读性强
  • 不管棋盘多大(只要总格子数≥10),都能稳定运行,不会出现因为重复选位置导致的额外循环耗时

内容的提问来源于stack exchange,提问作者william

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:14:57