Для решения данной задачи в JavaScript можно использовать различные подходы и алгоритмы. Один из них можно реализовать следующим образом:
1. Получить массив объектов, содержащих информацию о продуктах (например, название и цену).
2. Отсортировать массив по возрастанию цен продуктов.
3. Вычислить общую сумму всех цен продуктов.
4. Пройтись по всем продуктам в массиве и вычислить процентное соотношение его цены к общей сумме цен всех продуктов.
5. Присвоить каждому продукту его долю (доли могут быть представлены в виде чисел от 0 до 1).
6. Сгенерировать случайное число от 0 до 1.
7. Затем пройтись по всем продуктам в массиве. Если сгенерированное случайное число меньше или равно доле продукта, выбрать этот продукт.
8. Повторить шаг 6 и 7 столько раз, сколько раз нужно выбрать продукты.
Вот пример кода на JavaScript, который реализует данную логику:
// Массив продуктов const products = [ { name: 'product1', price: 10 }, { name: 'product2', price: 20 }, { name: 'product3', price: 30 }, { name: 'product4', price: 40 }, ]; // Сортировка по возрастанию цен const sortedProducts = products.sort((a, b) => a.price - b.price); // Вычисление общей суммы всех цен продуктов const total = sortedProducts.reduce((acc, product) => acc + product.price, 0); // Присвоение доли каждому продукту sortedProducts.forEach((product) => { product.share = product.price / total; }); // Функция для выбора продукта на основе сгенерированного случайного числа function selectProduct() { const random = Math.random(); // Генерация случайного числа от 0 до 1 let accumulativeShare = 0; for (const product of sortedProducts) { accumulativeShare += product.share; if (random <= accumulativeShare) { return product; } } } // Пример использования const selectedProduct = selectProduct(); console.log('Выбранный продукт:', selectedProduct);
Этот код решает вашу задачу, распределяя вероятности выбора продукта на основе его цены. Чем дороже продукт, тем меньше шансов его выбора.