在 JavaScript 中生成两个数字之间的随机数
2011-02-10
2565423
有没有办法用 JavaScript 生成 指定范围 内的 随机数 ?
例如 :指定范围从 1 到 6 ,其中随机数可以是 1、2、3、4、5 或 6 。
3个回答
function randomIntFromInterval(min, max) { // min and max included
return Math.floor(Math.random() * (max - min + 1) + min);
}
const rndInt = randomIntFromInterval(1, 6);
console.log(rndInt);
它“额外”的功能是允许不以 1 开头的随机间隔。 因此,例如,您可以获得从 10 到 15 的随机数。灵活性。
Francisc
2011-08-29
重要
以下代码仅在最小值为“1”时有效。它不适用于除“1”之外的最小值。如果您想要获取 1( 且只有 1 )和 6 之间的随机整数,您可以计算:
const rndInt = Math.floor(Math.random() * 6) + 1
console.log(rndInt)
其中:
- 1 是起始数字
- 6 是可能结果的数量(1 + 起始 (6) - 结束 (1) )
khr055
2011-02-10
Math.random()
返回一个介于最小值( 包含 )和最大值( 包含 )之间的 整数随机数 :
function randomInteger(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
返回 最小值 ( 包含 ) 和最大值 ( 不包含 ) 之间的任意随机数 :
function randomNumber(min, max) {
return Math.random() * (max - min) + min;
}
有用示例 (整数):
// 0 -> 10
const rand1 = Math.floor(Math.random() * 11);
// 1 -> 10
const rand2 = Math.floor(Math.random() * 10) + 1;
// 5 -> 20
const rand3 = Math.floor(Math.random() * 16) + 5;
// -10 -> (-2)
const rand4 = Math.floor(Math.random() * 9) - 10;
console.log(rand1);
console.log(rand2);
console.log(rand3);
console.log(rand4);
** 并且总是很高兴被提醒 (Mozilla):
Math.random() does not provide cryptographically secure random numbers. Do not use them for anything related to security. Use the Web Crypto API instead, and more precisely, the window.crypto.getRandomValues() method.
Lior Elrom
2014-06-11