使用Javascript

时间:2017-10-15 19:23:05

标签: javascript

这就是我生成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,但我想到这个数字可能会再次相同,所以我想这不是正确的方法。有没有人知道如何解决这个问题?

3 个答案:

答案 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.....;
}