You need to enable JavaScript to run this app. 一维1x10战舰游戏连续3个不重复0-10随机数生成实现
优惠活动
大模型
产品
解决方案
定价
更多

一维1x10战舰游戏连续3个不重复0-10随机数生成实现

1x10一维战舰连续战舰位置生成方案

实现逻辑

原有实现对全量数组做随机乱序后截取3个元素,没有加入“3个值必须连续相邻”的约束,无法得到符合要求的战舰坐标,无需复杂的乱序操作即可快速实现需求:

  • 首先划定合法的战舰起始位置边界:战舰总长度为3格,从起始位置开始要占据后续2个相邻位置,所有坐标必须落在0-10的棋盘范围内,因此起始位置最大只能取到8(对应占据8、9、10三个位置),可选起始位区间为0~8
  • 在合法起始位区间内随机生成一个整数,依次取出该数、该数+1、该数+2三个值,即为完整的战舰占据坐标

代码示例

// 定义合法起始位边界,保证3格连续不越界
const MIN_START = 0;
const MAX_START = 8;
// 生成闭区间[MIN_START, MAX_START]的随机整数
const startPos = Math.floor(Math.random() * (MAX_START - MIN_START + 1)) + MIN_START;
// 组装连续3格的战舰位置
const shipCoordinates = [startPos, startPos + 1, startPos + 2];
console.log(shipCoordinates);

适配性说明

  • 生成的坐标全部为连续3个无重复的整数,可输出[3,4,5]、[7,8,9]这类符合要求的组合
  • 所有生成的位置都在预设的1行10列棋盘范围内,不会出现坐标越界问题
  • 相比原有的数组乱序截取方案,这种实现的随机分布更均匀,无多余数组遍历操作,运行性能更好

补充说明:原有代码中使用sort(() => 0.5 - Math.random())的乱序方式本身存在随机分布不均的问题,替换为上述方案后可同时解决两个问题:坐标连续、随机分布均匀。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 15:15:04