У меня есть массив чисел, каждое из которых представляет вес. числа в массиве находятся в диапазоне от 0 до 1, и общее количество этих чисел составляет 1. Таким образом, если скажем, что массив [1] равен 0,6, то это означает, что я хочу, чтобы он показывался примерно в 60% случаев. Сам массив мне не известен, поэтому я не знаю этих чисел, например, они вводятся пользователем.
У меня есть решение, которое будет работать, но я не знаю, является ли это наиболее эффективным способом сделать это. Мое решение кажется очень неэффективным. Вот оно
- генерирует случайное число
- скопировать этот пользовательский массив ввода в новый массив и отсортировать его от наименьшего к наибольшему
- сравнить случайное число с числами в этом новом массиве, чтобы оно сравнивалось от наименьшего в массиве до наибольшего, когда случайное число меньше номера массива, тогда я сохраню номер массива в переменной, скажем, х и выйти из цикла
- наконец, я сравню x с исходным массивом, чтобы выяснить, каков индекс x в исходном массиве
это похоже на большую работу, есть ли более простое решение? моя голова не вращается так быстро
РЕДАКТИРОВАТЬ - исходный массив никак не сортируется
РЕДАКТИРОВАТЬ 2 - В основном у меня возникают проблемы при сравнении этого случайного числа с несортированным массивом. Мне нужно, чтобы несортированные остались неизменными, поэтому я создал этот новый массив в своей логике