Javascript 如何生成具有特定间隔的随机数?
我有这个样本: 代码JS:Javascript 如何生成具有特定间隔的随机数?,javascript,jquery,random,Javascript,Jquery,Random,我有这个样本: 代码JS: for (var i=0; i < 5; i++) { var number = 1 + Math.floor(Math.random() * 20); console.log(number); } for(变量i=0;ii+2)), 结果=[], 随机的 i=5,j; 而(我--){ random=[…number][Math.floor(Math.random()*numbers.size)]; 结果:推送(随机); 对于(j=random-2;
for (var i=0; i < 5; i++) {
var number = 1 + Math.floor(Math.random() * 20);
console.log(number);
}
for(变量i=0;i<5;i++){
变量编号=1+数学楼层(数学随机()*20);
控制台日志(编号);
}
我希望生成介于1和20之间的数字,但有以下限制:
谢谢您可以保留一个
集合
来检查数字是否已经生成,如果已经生成,则使用递归,
同样,为了生成差为3的数字,只需将数字乘以3再除以3即可
Math.floor(Math.random()*20)
让generateRandom=(函数(限制){
设集合=新集合([20]);
返回函数getRandom(){
设random=Math.floor(2+Math.floor(Math.random()*20/3)*3);
if(set.has(random)){
返回getRandom()
}否则{
set.add(随机)
返回随机数
};
}
})()
log(数组(5).fill(null).map(generateradom))
试试这个
var rendom=[];
while(rendom.length!=5){
var number=Math.floor(Math.random()*18)+2;
让发现=错误;
rendom.forEach(函数(元素){
if(元素=(数字-2)){
发现=真;
}
});
如果(!找到){
rendom.push(数字);
}
}
控制台日志(rendom)代码>您可以选择一个带有可能数字的集合,然后选择其中一个数字。然后删除不需要的下限值和上限值。重复以上步骤,直到被通缉的人数
函数get5(){
var numbers=新集合(数组.from({length:18},(u,i)=>i+2)),
结果=[],
随机的
i=5,j;
而(我--){
random=[…number][Math.floor(Math.random()*numbers.size)];
结果:推送(随机);
对于(j=random-2;j
.as console wrapper{max height:100%!important;top:0;}
“排除第一个和最后一个数字(1,20)”因此,生成的不是1-20而是2-19。“生成的数字之间的差异必须至少为3(例如:4、7、10等)”,这是顺序差异还是总数?例如,序列6->9->3
是否可接受,既然9
和3
之间的区别是6
,但是3
和6
之间的区别是3
我的例子可以作为一个起点,一起修改,这样我们就可以得到一个可以被其他人使用的例子。可能有更大的数字:3,10,14,20它不必是顺序的,那么像[9,17,14,4]
这样的结果呢?那么第五个值就没有值了。你需要排除1和20,排除第一个和最后一个数字t(1,20)@angle.bonev谢谢,错过了。已更新解决方案。仍将不排除20:([17,2,5,20,11,14]2+数学楼层(19/3)*3=20@angel.bonev更新后,我们可以在过滤器集中默认保留20。当差值为+2和-2,即4时,您不能创建5个最终将进入无限循环的数字。