2017-10-15 21 views
-1

我這是怎麼產生6個不同的數字:生成不同數量的JavaScript

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到100之間的唯一的隨機數]可能的複製(https://stackoverflow.com/questions/2380019/generate-unique-random-numbers-between-1-and-100) – izstas

+0

[如何隨機化(混洗)JavaScript數組?](https://stackoverflow.com/questions/2450954/如何對隨機化洗牌-A-JavaScript的陣列) – Nit

回答

-1

如何嘗試一段時間的循環?

while(random2 == random1 || random2 == random3) 
{ 
random2= math.....; 
} 
0

從1創建的數字陣列.. LEN-板 洗牌它(排序與的Math.random()< 0.5排序函數) 採取它的第一6.

想作爲像洗牌甲板卡,你不能拉同一張卡兩次。

所有「獨特」。

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];