这就是我生成6个不同数字的方法:
window.random_row = Math.floor(Math.random() * (len_board - 1)) + 1;
window.random_column = Math.floor(Math.random() * (len_board - 1)) + 1;
window.random_row2 = Math.floor(Math.random() * ((len_board-1) - 1)) + 1;
window.random_column2 = Math.floor(Math.random() * ((len_board-1) - 1)) + 1;
window.random_row3 = Math.floor(Math.random() * ((len_board+1) - 1)) + 1;
window.random_column3 = Math.floor(Math.random() * ((len_board+1) - 1)) + 1;
但是,我不希望行/列是相同的数字,例如random_row == random_column是允许的,但我不希望random_row == random_row2。我在考虑使用if / else语句。顺便说一句:if(random_row == random_row2)然后生成一个新的random_row2,但我想到这个数字可能会再次相同,所以我想这不是正确的方法。有没有人知道如何解决这个问题?
答案 0 :(得分:1)
我在https://stackoverflow.com/a/2380113/5108174
中看到了一个很好的答案适应您的问题:
function generate(qt, len_board) {
var arr = [];
while(arr.length < qt) {
var randomnumber = Math.floor(Math.random() * (len_board - 1)) + 1;
if(arr.indexOf(randomnumber) > -1) continue;
arr.push(randomnumber);
}
return arr;
}
var rows=generate(3,len_board);
var columns=generate(3,len_board);
window.random_row = rows[0];
window.random_column = columns[0];
window.random_row2 = rows[1];
window.random_column2 = columns[1];
window.random_row3 = rows[2];
window.random_column3 = columns[2];
答案 1 :(得分:0)
从1 .. len-board创建一个数字数组 洗牌(用Math.random()&lt; 0.5排序函数排序) 拿第6个。
把它当作洗牌一副牌,你不能拉两次卡。
所有“独特”。
答案 2 :(得分:-1)
尝试使用while循环怎么样?
while(random2 == random1 || random2 == random3)
{
random2= math.....;
}