определённым образом. Я беру диапазон случайных чисел от 0 до 100 и нужно чтобы числа от 0 до 30 встречались реже, а от 31 до 100 чаще, то есть с какой-то вероятностью. Например у чисел [0; 30] шанс выпасть равен 20%, а у [31;100] 80% и при грубой оценке будет 20 чисел с первым диапазоном, и 80 чисел со вторым. Даже не знаю как подобраться к этому. Можете помочь?
Нельзя ли сделать так (псевдокод) double p = rnd.Next(); return p <= 0.2 ? rnd.Next(0.0 ... 0.3) : rnd.Next(0.31 ... 1);
ну можно просто сгенерить 20 чисел в одном диапазоне, 80 в другом и перемешать массив
Я бы сделал 2 вариант. 1, делает получение случайного значения, с каким диапазоном работаем. Допустим у вас разделение процентов 20 на 80. узнаем выпавший процент. И потом, узнаем отдельно, случайное число, для диапазона 80%, т.е 2 броска. Второй вариант с искуственным увеличением диапазона, допустим взять 10000 вместо 100. и резделить на отрезки так, чтобы один отвечал за определенный диапазон. т.е смещаем вероятности. при больших количествах цифр, это будет сделать проще.
Не, я грубо привёл про 20 чисел. Вероятность же не работает что если 20%, то выпадет 20 раз из 100, может же выпасть и меньше. А за идею спасибо.
Второй вариант интересный) Спасибо!
Обсуждают сегодня