Генерация чисел с разными вероятностями повтора - C#
Формулировка задачи:
Задача на на первый взгляд простая) Но скажите как реализовать.
Задаётся диапазон чисел допустим 0 и 1 т.есть в генерированной последовательности должны присутствовать числа 0 и 1. и сделать возможность задать число, которое задает вероятность появления чисел в последовательности. Подскажете как это можно сделать?
Решение задачи: «Генерация чисел с разными вероятностями повтора»
textual
Листинг программы
class RandomSequence
{
private readonly double[] _probabilities;
private readonly Random _random = new Random();
public double[] Probabilities
{
get
{
return (double[]) _probabilities.Clone();
}
}
public RandomSequence(double[] probabilities)
{
if (Math.Abs(probabilities.Sum() - 1) > double.Epsilon)
throw new ArgumentException("Total probability should be 1");
_probabilities = probabilities;
}
public int Next()
{
var next = _random.NextDouble();
double sum = 0;
for (int i = 0;; i++)
{
sum += _probabilities[i];
if (sum > next)
return i;
}
}
}