Увеличение вероятности выпадения случайного числа - 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());

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы