случайное число между 1000 и 2000 для времени суток - PullRequest
0 голосов
/ 02 мая 2020

Я хочу сгенерировать случайное число между 1000 и 2000 для времени дня, оно должно быть в 100 приращениях. Это значит, что я могу протестировать тайм-ауты предварительной ставки и увидеть разные показатели видимости и количество показов в минуту. Затем, как только я получу достаточно данных, я смогу подобрать наилучшие настройки для любого времени суток и, надеюсь, получить лучшие результаты.

Помощь будет высоко ценится.

Это то, что у меня так далеко, но я меняю их вручную в зависимости от времени суток. Я вижу пики и впадины в трафике c на данный момент:

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

1 Ответ

0 голосов
/ 02 мая 2020

Общая формула будет 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;
}

РЕДАКТИРОВАТЬ:

Чтобы сделать его более обобщенным c и позволить вам настроить аспекты этого:

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

Если бы вы хотели применить это к вашему объекту для каждого значения в вашем объекте, я бы не сделал его супер обобщенным c, если вы не знали, что хотите использовать его в другом месте. Если бы это было так, я бы обернул функцию общего назначения в более специализированную функцию, которая закрыла бы указанные вами значения для этого конкретного c варианта использования, и сделал бы что-то вроде этого:

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(),
  ...
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...