Просто уточнить, что все, кто говорит, что в C # или на вашем компьютере нет True RNG, ошибаются. Многоядерный процессор по своей сути является Истинным ГСЧ. Очень просто, используя преимущества вращения процессора, вы можете генерировать були, которые не имеют заметного паттерна. Оттуда вы можете генерировать любой диапазон чисел, который вы хотите, используя bool в качестве битов и создавая число путем сложения битов.
Да, это величины медленнее, чем чисто математическое решение, но чисто математическое решение всегда будет иметь образец.
public static bool GenerateBoolean()
{
var gen1 = 0;
var gen2 = 0;
Task.Run(() =>
{
while (gen1 < 1 || gen2 < 1)
Interlocked.Increment(ref gen1);
});
while (gen1 < 1 || gen2 < 1)
Interlocked.Increment(ref gen2);
return (gen1 + gen2) % 2 == 0;
}