Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 生成唯一行、列的随机列表_Javascript_Random_Numbers - Fatal编程技术网

Javascript 生成唯一行、列的随机列表

Javascript 生成唯一行、列的随机列表,javascript,random,numbers,Javascript,Random,Numbers,如何在javascript中生成(并单独打印)唯一列、行对列表? 我设置了两个变量,一个列数和一个行数。我只希望每一对出现一次,并且不能有0。假设我有3行3列,我想要: 1,2 3,1 2,3 1,3 1,1 2,1 3,2 2,2 3,3 1,2 3,1 2,3 1,3 1,1 2,1 3,2 2,2 3,3 都是随机排列的。我该怎么做呢?您应该生成一个包含所有可能坐标对的数组,使用a将它们随机排列,然后打印出来 Array.prototype.shuffle= function(force)

如何在javascript中生成(并单独打印)唯一列、行对列表? 我设置了两个变量,一个列数和一个行数。我只希望每一对出现一次,并且不能有0。假设我有3行3列,我想要:

1,2 3,1 2,3 1,3 1,1 2,1 3,2 2,2 3,3 1,2 3,1 2,3 1,3 1,1 2,1 3,2 2,2 3,3
都是随机排列的。我该怎么做呢?

您应该生成一个包含所有可能坐标对的数组,使用a将它们随机排列,然后打印出来

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;
}
(可选)参数的用途是洗牌数组本身。
默认情况下,数组不会被洗牌,但会返回一个洗牌副本。

但不是我的算法

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

var数组=数组();
varⅠ,j;
对于(i=1;i而言,这应适用于:

// 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];
}
//新数组
a=[];
//3行3列
c=3;
r=3;
//用每一种独特的可能性填充数组
对于(var i=1;i,这里有一种方法:

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
var answer=(函数(宽度、高度){
var结果=[];

对于(var i=1;i你想要什么?网格中所有的行-列对都是按某种顺序写出来的?准确地说。最重要的是,以随机顺序写出来的。该函数的javascript版本在哪里?另外,我真的不懂javascript,你能给出一个生成数组并将其洗牌的示例吗?看看洗牌。我不知道javascript w我已经足够写代码来创建数组了。好的……希望我知道如何创建数组。谢谢你的帮助,耶利米!
for( var k = 0, len = answer.length; k < len; k++ ){
  console.log( answer[k] ); // or your preferred definition of "print"
}