function selectFrom(lowerValue, upperValue) {
let choices = upperValue - lowerValue + 1;
return Math.floor(Math.random() * choices + lowerValue);
}
let num = selectFrom(2, 10);
console.log(num); // 2~10 范围内的值,其中包含 2 和 10
这里的函数 selectFrom() 接收两个参数:应该返回的最小值和最大值,将这两个值相减再加 1 得到可选总数。
于是,调用 selectFrom(2,10) 就可以从 2~10(包含2到10)范围内选择一个值了。
通过使用这个函数,就很容易从一个数组中随机选择一个元素,例子如下:
let colors = ["red", "green", "blue", "yellow", "black", "purple", "brown"];
let color = colors[selectFrom(0, colors.length-1)];
在这个例子中,传给 selecFrom() 的第二个参数是数组长度减 1,即数组最大的索引值。
*提示:如果是为了加密而需要生成随机数(传给生成器的输入需要较高的不确定性),那么建议使用 window.crypto.getRandomValues() 。