如何在JavaScript中的两个指定变量之间生成随机整数,例如x=4和y=8将输出4、5、6、7、8中的任意一个?
当前回答
加密功能强
要获取[x,y]范围内的加密强随机整数,请尝试:
让cs=(x,y)=>x+(y-x+1)*crypto.getRandomValues(新Uint32Array(1))[0]/2**32|0控制台日志(cs(4,8))
其他回答
伊奥努·G·斯坦写了一个很棒的答案,但对我来说有点太复杂了。因此,我在Math.floor(Math.random()*(max-min+1))+min)中找到了对相同概念的更简单的解释。
注意:在阅读Jason的解释之前,你应该知道的唯一重要的事情是“truncate”的定义。他在描述Math.floor()时使用了这个术语。牛津词典将“truncate”定义为:
通过切掉顶端或末端来缩短(某物)。
random(min,max)生成介于min(含)和max(不含)之间的随机数Math.floor将数字向下舍入到最接近的整数函数generateRandomInteger(最小,最大){return数学下限(随机(最小值,最大值))}
因此,要生成一个介于4和8之间的随机整数,请使用以下参数调用上述函数:
generateRandomInteger(4, 9)
function randomRange(min, max) {
return ~~(Math.random() * (max - min + 1)) + min
}
如果您使用Undercore.js,也可以使用
_.random(min, max)
数学.随机()
返回介于min(包含)和max(包含)之间的整数随机数:
function randomInteger(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
或介于min(包含)和max(不包含)之间的任意随机数:
function randomNumber(min, max) {
return Math.random() * (max - min) + min;
}
有用的示例(整数):
// 0 -> 10
Math.floor(Math.random() * 11);
// 1 -> 10
Math.floor(Math.random() * 10) + 1;
// 5 -> 20
Math.floor(Math.random() * 16) + 5;
// -10 -> (-2)
Math.floor(Math.random() * 9) - 10;
**总是很高兴被提醒(Mozilla):
Math.random()不提供加密安全的随机数字。不要将它们用于与安全相关的任何事情。使用Web加密API,更准确地说window.crypto.getRandomValues()方法。
以下是排字的解决方案
function getRandomInt(min:number, max:number):number {
return min+Math.round(Math.random() * (max-min));
}
for(let i:number=0; i<100; i++){
console.log(`${i+1} >> ${getRandomInt(1,6)}`)
}