Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2024, 12:47
Кандидат Javascript-наук
Отправить личное сообщение для rafaello Посмотреть профиль Найти все сообщения от rafaello
 
Регистрация: 09.11.2012
Сообщений: 103

Получить элемент массива с вероятностью
Здравствуйте!
Есть такой массив
var arr = ["apple;40", "pear;15", "orange;5", "pumpkin;30", "cabbage;10"];

И есть 20(условно, может быть больше или меньше) ящиков. Надо в каждый ящик положить по одному фрукту с заданным процентом вероятности, который в строке после разделителя ";".
Первое, что приходит на ум, это пройти циклом по все ящикам и на каждой итерации цикла получить случайное число от 1 до 100. И на основании полученного числа присвоить каждому ящику определенный фрукт. Название фрукта вытаскиваем методом str.split(";");
В общих чертах понятно, но как именно рассчитать процент вероятности на каждой итерации - вот здесь голову сломал. Пол дня просидел и ничего не получается.
Не подскажете!
Заранее огромное спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2024, 14:24
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

Создать массив на 100 элементов и заполнить его согласно вероятностям: 40 элементов apple, 15 pear и тд.
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2024, 14:33
Кандидат Javascript-наук
Отправить личное сообщение для rafaello Посмотреть профиль Найти все сообщения от rafaello
 
Регистрация: 09.11.2012
Сообщений: 103

Сообщение от Rise Посмотреть сообщение
Создать массив на 100 элементов и заполнить его согласно вероятностям: 40 элементов apple, 15 pear и тд.
Это очень неудобно.
Потому что изначально массив - это список юзер агентов, это я для наглядности написал, что фрукты. Этот список получен из текстового файла, где каждая строка - элемент массива, причем количество фруктов/юзер агентов может быть разное (при условии, что сумма процентов вероятности всех фруктов всегда равна 100).
Смысл в том, что сделал текстовый список и вставил в программу. Это гораздо проще, чем каждый раз делать массив из 100 элементов.
Ответить с цитированием
  #4 (permalink)  
Старый 18.11.2024, 21:10
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

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));
Ответить с цитированием
  #5 (permalink)  
Старый 19.11.2024, 07:59
Кандидат Javascript-наук
Отправить личное сообщение для rafaello Посмотреть профиль Найти все сообщения от rafaello
 
Регистрация: 09.11.2012
Сообщений: 103

хотя код не отрабатывает, есть какая то ошибка, но суть я понял.
Спасибо большое за помощь!
Ответить с цитированием
  #6 (permalink)  
Старый Сегодня, 10:46
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Вот есть с примерами на пыхе. Особенно доставляет первый, где формула возведения в степень.
Встретишь где то и охереешь, пытаясь понять
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение из ассоциативного массива? ligisayan jQuery 18 04.08.2015 18:42
Получить элемент, на котором была вызвана функция barcelona Общие вопросы Javascript 15 06.07.2013 03:44
Получить элемент относительно текущего, над которым произошло действие Киноман jQuery 2 30.04.2012 00:24
Как переместить элемент массива "на вверх" Solovei95 Общие вопросы Javascript 3 28.01.2012 10:55
Как получить элемент всплывающего окна simplexe Events/DOM/Window 1 20.10.2011 16:42