Увеличение вероятности выпадения случайного числа - 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());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д