Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Processing - Fatal编程技术网

Javascript 用随机值填充数组

Javascript 用随机值填充数组,javascript,arrays,processing,Javascript,Arrays,Processing,我有两个1D数组,我想在处理过程中用10个唯一的随机x,y值填充它们 例如: x y - - 3, 9 2, 4 6, 2 7, 5 我的阵列是: 表1中的X值和 表2中的Y值 我的问题是,如果数字3,9已经存在,我不希望9,3存储在数组中 我可以确定x,y值(或y,x)何时已经存在,但一旦替换它,我就无法检查先前索引中是否存在新生成的随机数 这就是我迄今为止所尝试的。但是,如果存在3个值,那么数组Table1和Table2将只存储7个值,而不是10个值 for (int i=0; i&

我有两个1D数组,我想在处理过程中用10个唯一的随机x,y值填充它们

例如:

x  y 
-  -
3, 9
2, 4
6, 2
7, 5
我的阵列是:

表1中的X值和

表2中的Y值

我的问题是,如果数字3,9已经存在,我不希望9,3存储在数组中

我可以确定x,y值(或y,x)何时已经存在,但一旦替换它,我就无法检查先前索引中是否存在新生成的随机数

这就是我迄今为止所尝试的。但是,如果存在3个值,那么数组Table1和Table2将只存储7个值,而不是10个值

for (int i=0; i<10; i++) {       
   x=(int)random(6);
   y=(int)random(6);
 if  ((Table1[i] != x && Table2[i] != y) || (Table1[i] != y && Table2[i] != x))
   {
    Table1[i] = x; 
    Table2[i] = y;
   }   

对于(int i=0;i我看不到其他选项,可以再次遍历整个数组以检查它们是否包含新生成的值。

我只能考虑两种实现方法,没有一种是理想的

  • 检查您生成的数字是否已经存在,如果是这种情况,则生成另一个数字,直到您得到唯一的组合。由于它是随机的,所以可能会很昂贵,如果您非常不幸,甚至可能以无限循环结束
  • 创建一个包含所有可能组合的数组。然后,您将在该数组中生成一个随机索引(一个[0;array.length[)中的整数),而不是生成随机数。然后,您必须从数组中删除choosen组合(这样,它将不可用于下一个循环),并删除它的倒数(如果您选择了)(9;3),您必须删除(9;3)和(3;9))

    • 我有这段代码可能会帮助您

      首先声明数组:

      var a = [];
      var b = [];
      
      然后你可以调用一个函数,它可以为你做任何事情

      fill(a,b)
      
      此函数的定义应如下所示:

      function fill(a, b) { 
             var arr = [];
             while(arr.length<10) {
                   var pair = randomPair();
                   if (arr.indexOf(pair.join(','))==-1 || arr.indexOf(pair.reverse().join(','))==-1) {
                      a.push(pair[0]);
                      b.push(pair[1]);
                      arr.push(pair.join(','));
                   }
             }
          }
      

      因此,很明显,randomPair函数返回2个值x和y。
      fill
      函数测试该对是否已经存在,是否以正常顺序或相反顺序存在。如果不存在,则同时添加a和b,它们是对主数组的引用;

      是否有一个值范围可以将随机数限制在0到6之间。@Martin Yesw如果你想要10个唯一的随机数,你能将0限制在6吗?这不是一个神奇的解决方案。你必须对照你要插入的内容检查数组中已经存在的内容。你有没有显示你迄今为止尝试过的内容?@Martin,因为OP需要的是组合,而不是单个数字。区别是什么“回答”和“评论”之间的矛盾?我甚至不能投票给答案,因为我没有名声。。。
      function randomPair () { 
         return [ parseInt(Math.random()*7) , parseInt(Math.random()*7) ]
      }