一天中时间介于 1000 和 2000 之间的随机数



我希望生成一个介于1000&一天中的时间是2000,它必须以100为增量。这样我就可以测试预出价超时,并查看不同的可观看性数据和cpm。然后,一旦我获得了足够的数据,我就可以为一天中的任何特定时间制定出最佳设置,并有望获得更好的结果。

我们将不胜感激。

这是我到目前为止所拥有的,但我正在根据一天中我看到的交通高峰和低谷手动更改它们:

var timeoutMap = {
0 : 2000,
1 : 2000,
2 : 2000,
3 : 1600,
4 : 1600,
5 : 1600,
6 : 1400,
7 : 1400,
8 : 1400,
9 : 1400,
10 : 1400,
11 : 1400,
12 : 1600,
13 : 1600,
14 : 1600,
15 : 1600,
16 : 1600,
17 : 1600,
18 : 1600,
19 : 1600,
20 : 1600,
21 : 1600,
22 : 1600,
23 : 2000
};
var t = new Date().getUTCHours();
PREBID_TIMEOUT = timeoutMap[t];
console.log("prebid timeout:", PREBID_TIMEOUT );

一般公式为minValue + randomFloatBetweenZeroAndOne * (maxValue - minValue)。那么要得到100的步长,它将是randomNumGeneratedInPreviousStep / 100, rounded to nearest int, then multiplied by 100

function generateRandom() {
const randomNum = 1000 + Math.random() * 1000;
return Math.round(randomNum / 100) * 100;
}

编辑:

为了使其更通用,并允许您自定义以下方面:

function generateRandom(min, max, step) {
const randomNum = min + Math.random() * (max - min);
return Math.round(randomNum / step) * step;
}

如果您想将其应用于对象中每个值的对象,我不会使其成为超通用的,除非您知道您想在其他地方使用它。如果是这样的话,我会将通用函数封装在一个更专业的函数中,该函数在这个特定用例的指定值上闭合,并执行类似的操作:

const MIN_RANDOM = 1000;
const MAX_RANDOM = 2000;
const RANDOM_STEP = 100;
function generateRandom(min, max, step) {
const randomNum = min + Math.random() * (max - min);
return Math.round(randomNum / step) * step;
}
function myRandom() {
return generateRandom(MIN_RANDOM, MAX_RANDOM, RANDOM_STEP);
}
var timeoutMap = {
0 : myRandom(),
1 : myRandom(),
2 : myRandom(),
3 : myRandom(),
...
};

最新更新