随机数字没有重复,彼此之间的范围

时间:2016-08-26 20:20:42

标签: javascript svg

我试图获取0到1000之间的非重复随机数列表,每个随机数之间的差异将超过10.这意味着任何所选数字之间的差异都不能超过10。等于或小于10。

我想在svg中添加一些文字,其x和y坐标不在相同或靠近的位置。

randomNumbers = [];
// First, pick a bin size b
var b = 40;
// Then generate a random number n0 between 0 and b
var n0 = Math.floor(Math.random()*b);
while(randomNumbers.length < 20){
  // Then generate the next random number n1 between n0 + 10 and n0 + 10 + b
  var minRange = n0 + 10;
  var maxRange = n0 + 10 + b;
  var n1 = Math.floor(Math.random()*(maxRange - minRange) + minRange);
  randomNumbers.push(n1);
  n0 = n1;
  // Continue in this manner until you have as many numbers as you need
}
// If you need them to be in random order, shuffle them after they are generated.
function shuffle(array) {
  let counter = array.length;

  // While there are elements in the array
  while (counter > 0) {
      // Pick a random index
      let index = Math.floor(Math.random() * counter);

      // Decrease counter by 1
      counter--;

      // And swap the last element with it
      let temp = array[counter];
      array[counter] = array[index];
      array[index] = temp;
  }

  return array;
}

var shuffledRandomNumbers = shuffle(randomNumbers);

1 个答案:

答案 0 :(得分:0)

首先,选择一个bin大小 b (比方说,20)。然后在0和 b 之间生成一个随机数 n 0 。然后在 n 0 + 10和 n 之间生成下一个随机数 n 1 0 + 10 + b 。以这种方式继续(使用 n i -1 + 10和 n i < / em> -1 + 10 + b 生成 n i )直到你拥有as您需要的许多数字或直到 n i 超过1000。

至于选择一个bin大小,我会选择一些东西,以便1000 /( b + 10)与你需要的数字相关。

如果您需要它们是随机顺序,请在生成它们后随机播放它们。