Как сделать распределение по процентам, чем дороже цена тем меньше шансов?

Для решения данной задачи в 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);

Этот код решает вашу задачу, распределяя вероятности выбора продукта на основе его цены. Чем дороже продукт, тем меньше шансов его выбора.