JavaScript-随机1-5 5×5数组
作者:互联网
我正在尝试制作一个5×5的表格,该表格会将数字1-5随机放入行/列中.但是它们需要为每一行和每一列具有所有不同的数字.
例如:
12345
54123
41532
35214
23451
我当前拥有的代码很长,因此我将提供一个pastebin链接. http://pastebin.com/ex1bcLxh
任何和所有帮助将不胜感激.
解决方法:
这就是我想出的主意-我没有为优化而烦恼,因为问题中提到的5×5的网格大小感觉是瞬间的. (即使在IE7中进行测试,甚至7×7网格也只需要花费几秒钟的时间.8×8的运行速度明显慢一些,有时甚至慢到足以触发长时间运行的脚本错误.)
function createGrid(size) {
var grid = [],
row = [],
x,y,t;
for (x=size; x>0; x--)
row.push(x);
addRows:
while (grid.length < size) {
t = row.slice();
row = [];
while (t.length > 0)
row.push(t.splice(Math.floor(Math.random() * t.length), 1)[0]);
for (y=0; y<grid.length; y++)
for (x=0; x<size; x++)
if (row[x] === grid[y][x])
continue addRows;
grid.push(row);
}
return grid;
}
var test = createGrid(5);
alert(test.join("\n"));
如果不太明显,基本思想是从行[5,4,3,2,1]开始;随机排列该行并检查是否可以添加;重复直到完成.
(我考虑过先生成所有可能的行,然后从它们中随机选择,但是考虑到我对排列算法不是很满意,这似乎太麻烦了-每次都随机洗牌似乎麻烦很多.)
标签:random,combinatorics,javascript,algorithm 来源: https://codeday.me/bug/20191202/2085308.html