@NQUAREx

Как реализовать такую вероятность random?

Очень запутанный вопрос, надеюсь получиться объяснить.

Мне нужно не конкретное решение а алгоритм, теорию, псевдокод, ну короче понятно.
В общем, есть вероятности, массив, их сумма всегда 100 (то есть 100%), и вот как сгенерировать рандомное число по этим вероятностям?

Я сделал как то так:
- Генерируется рандомное число от 0 до суммы этих вероятностей, то есть 100.
- В цикле (0; < arr.length; ++) от sum по очереди отнимается каждая вероятность, и если рандомное число меньше sum то результат будет results[i]

Короче да, ничего непонятно. Но я блин прошу, помогите кто ни будь с этой штукой, может еще кому то будет полезно

Вот код (ну часть) если как то сделает яснее:
let prob_sum = 0
				let bonus = 'non'
				for (let i = 0; i < probs.length; ++i)
					prob_sum += probs[i]

				let prob = random(0, prob_sum)

				for (let i = 0; i < probs.length; ++i) {
					prob_sum -= probs[i]
					if (prob < prob_sum)
						bonus = results[i]
				}

Пасиб всем кто поможет, пожалуйста не проходите мимо, да, помучайтесь (для кого как) вместе со мной =)
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Подход у вас верный, вроде бы.

Если нужно случайно выбрать одно из N событий, у каждого своя вероятность – то сложить их в одну линию от 0 до N. Взять случайное от 0 до N и посмотреть на чей отрезок попадает.

Например три события с вероятностями:
А: 30%
B: 65%
С: 5%
Отрезок получится: [0..30) [30..95) [95..100)
Взять случайное от 0 до 100 и посмотреть, куда попало.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы