Как сделать чтобы рандом выдавал сначала больше повторяющих чисел
к примеру 001000111100000110001111110001111110010001110111
и потом через период выдавал больше одинарних
00110001010101001100101101010100111010
Ответ
Вам нужен нестандартный генератор случайных бит, который помнит предыдущий бит, и выдаёт результат, зависимый от него.
Это легко организовать:
class DependentRandomBitGenerator
{
Random r = new Random();
public double DependencyFactor { get; set; } = 0.5;
int prev = 0;
public int GetNext()
{
if (r.NextDouble() < DependencyFactor)
prev = 1 - prev;
return prev;
}
}
Проверяем:
var rg = new DependentRandomBitGenerator() { DependencyFactor = 0.2 };
for (int i = 0; i < 25; i++)
Console.Write(rg.GetNext());
Console.WriteLine();
rg.DependencyFactor = 0.8;
for (int i = 0; i < 25; i++)
Console.Write(rg.GetNext());
Console.WriteLine();
Результат:
0000000011111100000000001
0010101011010101010101010
Вы можете, по идее, плавно менять вероятность «сцепки» последовательных бит.
Комментариев нет:
Отправить комментарий