我將如何生成(並單獨列出)javascript中唯一列對行列表? 我有兩個變量集,一些列和一些行數。我只希望每一對出現一次,並且它不能有0。說我有3行3列,我想:生成唯一行,列的隨機列表javascript
1,2 3,1 2,3 1,3 1,1 2,1 3,2 2,2 3,3
所有以隨機順序。我將如何做到這一點?
我將如何生成(並單獨列出)javascript中唯一列對行列表? 我有兩個變量集,一些列和一些行數。我只希望每一對出現一次,並且它不能有0。說我有3行3列,我想:生成唯一行,列的隨機列表javascript
1,2 3,1 2,3 1,3 1,1 2,1 3,2 2,2 3,3
所有以隨機順序。我將如何做到這一點?
不是我的算法雖然
<script type="text/javascript">
var array = Array();
var i,j;
for(i=1; i <= 3; i++){
for(j=1; j<=3; j++){
array.push(j+', '+i);
}
}
var newarr = shuffle(array);
console.log(newarr);
document.write(newarr);
function shuffle(array)
{ //v1.0
for(var j, x, i = array.length; i; j = parseInt(Math.random() * i), x = array[--i], array[i] = array[j], array[j] = x);
return array;
};
</script>
謝謝謝謝謝謝謝謝!像魅力一樣工作! –
@Leticia邁耶歡迎您 –
您應該生成所有可能的座標對的數組,使用shuffling algorithm將它們放入隨機順序,然後將其打印出來。
這個函數的javascript版本在哪裏?另外,我真的很喜歡JavaScript,你可以發佈一個生成數組並對其進行洗牌的例子嗎? –
看看http://stackoverflow.com/questions/962802/is-it-correct-to-use-javascript-array-sort-method-for-shuffling/962890#962890的洗牌。我不太瞭解JavaScript以編寫代碼來創建數組。 –
好的...希望我知道如何創建陣列。謝謝你的幫助,耶利米! –
Array.prototype.shuffle= function(force){
var i, temp, L= this.length,
A= force? this: this.concat();
while(--L){
i= Math.floor(Math.random()*L);
temp= A[i];
A[i]= A[L];
A[L]= temp;
}
return A;
}
(可選)參數的目的是洗牌數組本身。 默認情況下,該數組不是混洗,但會返回一個混洗副本。
這應該工作:
// New Array
a = [];
// 3 rows, 3 columns
c = 3;
r = 3;
// fill array with every unique possibility
for(var i = 1; i <= r; i++) {
for(var j = 1; j <= c; j++) {
a[a.length] = "" + i + "," + j;
}
}
// random pick into another array
result = [];
a_len = a.length;
for(var i = 0; i < a_len; i++) {
result[result.length] = a.splice(Math.floor(Math.random()*a.length), 1)[0];
}
如果你只是想打印的結果,而不是在一個陣列,具有人只是做打印的,而不是「結果[結果。長度]」。
這裏有一種方法:
var answer = (function(width,height) {
var result = [];
for (var i = 1; i <= width; i++) {
for (var j = 1; j <= height; j++) {
result.push([i, j]);
}
}
return result.sort(function(a, b) {
return 0.5 - Math.random();
});
}(3,3)); // enter width/height here, 1-indexed
編輯:忘記了 「打印」 的要求:
for(var k = 0, len = answer.length; k < len; k++){
console.log(answer[k]); // or your preferred definition of "print"
}
你想幹什麼?網格中的所有行 - 列對以某種順序寫出? –
準確。隨機順序,最重要的是。 –