我正在尝试进行一个数字模拟,其功能如下:
因此,如果我的起始值为5,我需要它来生成一个2的范围内的数字。然后需要取该值(3到7之间)并生成另一个具有相同范围2的数字, 等等。但是我还需要生成任何数字以保持0到10之间。
我可以使用具有单个定义范围的random(),但我不知道如何做两个:
function generateValue(min, max) {
var max = 2,
min = 0,
value = (Math.random() * (max - min) + min).toFixed(6);
return value;
}
答案 0 :(得分:1)
你需要一个接受4个参数的函数:baseline,range,min和max(如果我理解正确的话)。此外,我相信你在一个范围内从一个范围中获取一个随机数的错误。我认为这是一个能满足您需求的功能:
function generateValue(baseline, range, min, max) {
let localMin = Math.max(baseline - range, min);
let localMax = Math.min(baseline + range, max);
return (Math.random() * (localMax - localMin) + localMin).toFixed(6);
}
答案 1 :(得分:0)
这是你的功能。其参数是基线值。如果您愿意,也可以制作min
,max
,range
参数:
function generateValue(value) {
let max = 10,
min = 0,
range = 2,
newValue = value; // Start at baseline value
newValue += (2 * Math.random() - 1) * range; // Generate new value within +/- range
return (newValue < min ? min : // Cannot be lower than min
newValue > max ? max : // Cannot be greater than max
newValue);
}