Увеличение вероятности выпадения случайного числа - C#
Формулировка задачи:
Здравствуйте.
Есть массив int из ста элементов, который заполнен числами от 0 до 99. По нажатию на кнопку пользователю выводится случайный элемент массива.
Необходимо сделать так, чтобы вероятность выпадения определённого элемента увеличивалась в зависимости от значения этого элемента. Т.е. чтобы число 99 выпадало значительно чаще, а 0 почти не выпадал. При этом рандомность необходимо сохранить, чтобы вероятность выпадения 0 всё же была, да и остальных чисел тоже.
Пример: 95, 99, 89, 99, 90, 57, 98,...N..., 0, 97, 95,...N..., 12, 70, 72, 94....
Как это осуществить? Есть какие-нибудь готовые формулы на такой случай?
Решение задачи: «Увеличение вероятности выпадения случайного числа»
textual
Листинг программы
int n0 = 0; int n10 = 0; int n20 = 0; int n30 = 0; int n40 = 0; int n50 = 0; int n60 = 0; int n70 = 0; int n80 = 0; int n90 = 0; for (int j = 0; j <= 10000; j++) { int[] Arr = new int[100]; int nSumm = 0; for (int i = 0; i < Arr.Length; i++) { Arr[i] = i; nSumm += i; } Random rnd = new Random(); int nRand = rnd.Next(0, nSumm + 1); for (int i = 0; i < Arr.Length; i++) { nRand = nRand - Arr[i]; if (Arr[i] >= nRand) { //MessageBox.Show(Arr[i].ToString()); if (Arr[i] >= 0 && Arr[i] < 10) n0++; if (Arr[i] >= 10 && Arr[i] < 20) n10++; if (Arr[i] >= 20 && Arr[i] < 30) n20++; if (Arr[i] >= 30 && Arr[i] < 40) n30++; if (Arr[i] >= 40 && Arr[i] < 50) n40++; if (Arr[i] >= 50 && Arr[i] < 60) n50++; if (Arr[i] >= 60 && Arr[i] < 70) n60++; if (Arr[i] >= 70 && Arr[i] < 80) n70++; if (Arr[i] >= 80 && Arr[i] < 90) n80++; if (Arr[i] >= 90 && Arr[i] < 100) n90++; break; } } } MessageBox.Show(n0.ToString() + "\n" + n10.ToString() + "\n" + n20.ToString() + "\n" + n30.ToString() + "\n" + n40.ToString() + "\n" + n50.ToString() + "\n" + n60.ToString() + "\n" + n70.ToString() + "\n" + n80.ToString() + "\n" + n90.ToString());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д