Рандомные цифры с разной вероятностью появления - C#
Формулировка задачи:
Есть диапазон рандомных чисел:
Но у них одинаковая вероятность появления. Как сделать, чтобы вероятность появления цифры 3 = 60%, цифры 2 = 20%, 1 = 15%, 0 = 5%?
Random rand = new Random();
label4.Text = Convert.ToString(rand.Next(0, 4));Решение задачи: «Рандомные цифры с разной вероятностью появления»
textual
Листинг программы
static Random rn = new Random();
public static int getRnd(Dictionary<double, int> p)
{
double total = 0;
foreach (double d in p.Keys)
total += d;
double r = rn.NextDouble() * total;
total = 0;
foreach (double d in p.Keys)
{
total += d;
if (total >= r) return p[d];
}
return -1;
}