Javascript:使用范围

时间:2018-02-10 01:13:39

标签: javascript random

我正在尝试进行一个数字模拟,其功能如下:

  1. 以基线值开始
  2. 在给定的基线范围内生成随机值
  3. 获取生成的值并生成相同范围内的其他值
  4. 所有生成的值都在更大的范围内
  5. 因此,如果我的起始值为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;
    }
    

2 个答案:

答案 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)

这是你的功能。其参数是基线值。如果您愿意,也可以制作minmaxrange参数:

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);
}