Страницы

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

вторник, 16 апреля 2019 г.

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

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

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

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