Можно выбрать случайное значение из массива с помощью кода:
config.targets[Math.floor(Math.random() * config.targets.length)]
А можно ли сделать так, чтобы в 75% случаев выбирались первые 10% содержимого массива?
Например, есть массив с числами от 1 до 100. Нужно, чтобы 75% рандома выпало на числа от 1 до 10.
Если нужно обеспечить минимум 75% вероятности того, что случайно выбранные элементы окажутся в первой 1/10 части массива:
let max = config.targets.length;
if (Math.random() < 0.75) // с вероятностью 75%...
max /= 10; // ...сокращаем диапазон до 10% от кол-ва элементов
let idx = Math.floor(Math.random() * max); // это результат, "случайный" индекс элемента
"Обеспечить" - это условно... На практике, в некотрых случаях может получиться немного меньше (величина отклонения зависит от кол-ва элементов, в первую очередь).
const config = { targets: new Array(100) };
let max = config.targets.length;
for (let i = 0; i < max; i++)
config.targets[i] = i + 1;
const rndTarget = () => {
let cMax = Math.random() >= 0.75 ? max : max * 0.1;
return config.targets[Math.floor(Math.random() * cMax)];
};
const testVol = 250;
for (var test = [], i = 0; i < testVol; i++)
test.push(rndTarget());
const tenPercentCount = test.reduce((r, v) => r += v <= 10, 0);
console.log(`Из ${testVol} случайно выбранных элементов, ${(tenPercentCount / testVol * 100).toFixed(1)}% в первой 1/10 части массива.\nЧисла:\n${test.join(', ')}`);
Число запросов поделите пропорционально и в 75% случаев выборку меняйте на нужные 10% )
PS Ну вот так еще можно:
random = Math.round( Math.random() * 100);
if ( random >= 0 && random <= 75 ) Math.round( Math.random() * 10);
else if ( random > 75 && random <= 100 ) Math.round( Math.random() * 90 + 10);
const f = (n, m, p) => () => Math.floor (Math.random () * (Math.random () < p ? m : n))
console.log (Array.from ({length: 100}, f (100, 10, 0.75)))
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как можно получить только имя файла или папки через regex ? Например у меня есть такой путь:
Есть запрос с базе данных mysqlон возвращает 83000 строк
Помогите пожалуйста сформировать запросЕсть выборка из 2х таблиц: