Получить элемент массива с вероятностью
Здравствуйте!
Есть такой массив var arr = ["apple;40", "pear;15", "orange;5", "pumpkin;30", "cabbage;10"]; И есть 20(условно, может быть больше или меньше) ящиков. Надо в каждый ящик положить по одному фрукту с заданным процентом вероятности, который в строке после разделителя ";". Первое, что приходит на ум, это пройти циклом по все ящикам и на каждой итерации цикла получить случайное число от 1 до 100. И на основании полученного числа присвоить каждому ящику определенный фрукт. Название фрукта вытаскиваем методом str.split(";"); В общих чертах понятно, но как именно рассчитать процент вероятности на каждой итерации - вот здесь голову сломал. Пол дня просидел и ничего не получается. Не подскажете! Заранее огромное спасибо! |
Создать массив на 100 элементов и заполнить его согласно вероятностям: 40 элементов apple, 15 pear и тд.
|
Цитата:
Потому что изначально массив - это список юзер агентов, это я для наглядности написал, что фрукты. Этот список получен из текстового файла, где каждая строка - элемент массива, причем количество фруктов/юзер агентов может быть разное (при условии, что сумма процентов вероятности всех фруктов всегда равна 100). Смысл в том, что сделал текстовый список и вставил в программу. Это гораздо проще, чем каждый раз делать массив из 100 элементов. |
let array1 = ["apple;40", "pear;15", "orange;5", "pumpkin;30", "cabbage;10"]; // Создать массив на 100 элементов let array2 = new Array(100); // и заполнить его согласно вероятностям for (let index = 0, index1 = 0; index < array1.length; index++) { let [value1, value2] = array1[index].split(';'); let index2 = index1 + Number(value2); array2.fill(index, index1, index2); index1 = index2; } console.log(String(array2)); |
хотя код не отрабатывает, есть какая то ошибка, но суть я понял.
Спасибо большое за помощь! |
Вот есть с примерами на пыхе. Особенно доставляет первый, где формула возведения в степень.
Встретишь где то и охереешь, пытаясь понять |
Часовой пояс GMT +3, время: 07:35. |