Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Как сделать чтобы рандом выдавал сначала больше повторяющих чисел?

#c_sharp #алгоритм


Как сделать чтобы рандом выдавал сначала больше повторяющих чисел 

к примеру 001000111100000110001111110001111110010001110111
и потом через период выдавал больше одинарних 

00110001010101001100101101010100111010
    


Ответы

Ответ 1



Вам нужен нестандартный генератор случайных бит, который помнит предыдущий бит, и выдаёт результат, зависимый от него. Это легко организовать: 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 Вы можете, по идее, плавно менять вероятность «сцепки» последовательных бит.

Комментариев нет:

Отправить комментарий