没有重复的随机数,并且彼此之间有范围
Random numbers without duplicates and range between each other
我试图获得0到1000之间的非重复随机数列表,每个随机数彼此相差超过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);
首先,选择一个容器大小b(例如,20)。然后在0和b之间生成一个随机数n0。然后在n0 + 10和n0 + 10 + b之间生成下一个随机数n1。继续以这种方式(使用ni-1 + 10和ni + 10 + b生成ni),直到您有足够多的数字,或者直到ni超过1000。
至于选择一个箱子的大小,我会选择1000/(b + 10)是你需要的数字的数量。
如果需要随机排列,则在生成后重新排列。
相关文章:
- cloudSearch:范围从0到某个值之间的距离
- 在两个浏览器选项卡之间共享变量范围
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 节点模块对象范围:在所有函数之间共享一个对象
- 离子范围值未更新 在$state之间导航
- 当间隔之间的范围高时,在高图表中显示y轴上的整个值
- 如何使用javascript将文本框中的值限制为1-999之间的值范围
- 函数之间的Javascript变量范围问题
- 命名空间和词法范围之间的关系是什么
- AngularJS 1.0.x 和 1.2.x 之间的范围差异
- 正则表达式用于验证两个范围之间的数字
- 模式匹配检查范围之间的邮政编码
- 用于筛选日期范围之间的数据的沙发基视图
- 正则表达式用于在 JavaScript 中查找任何两个数值(范围)之间的所有数字
- AngularJS在父级和子级范围指令之间共享数据
- 如何允许用户共享他们的<型号名称>彼此之间
- 确定时间范围的回调函数彼此之间不冲突
- 无效的列索引未定义.取值范围为[0-8]之间的整数
- 没有重复的随机数,并且彼此之间有范围
- MVC Razor$.Ajax彼此之间工作不好