Ответ здесь имеет две основные стороны. Есть несколько довольно важных тонкостей, на которые стоит обратить должное внимание ...
Легкий путь (для простоты и практичности)
RNGCryptoServiceProvider
, который является частью Crypto API в BCL, должен выполнить эту работу за вас. Технически это все еще генерируемое псевдослучайное число, но качество «случайности» намного выше - подходит для криптографических целей, как можно предположить из названия.
Также доступны другие криптографические API с высококачественными псевдослучайными генераторами. Такие алгоритмы, как Mersenne twister , довольно популярны.
Сравнивая это с классом Random
в BCL, это значительно лучше. Например, если вы нанесете числа, сгенерированные Random
, на график, вы сможете распознать шаблоны, что является сильным признаком слабости. Во многом это связано с тем, что алгоритм просто использует заполненную таблицу соответствия фиксированного размера.
Трудный путь (для теоретической случайности высокого качества)
Чтобы сгенерировать истинно случайных чисел, вам нужно использовать некоторые естественные явления, такие как ядерный распад, микроскопические колебания температуры (температура процессора является сравнительно удобным источником), и это лишь некоторые из них. Это, однако, намного сложнее и требует дополнительного оборудования, конечно. Я подозреваю, что практическое решение (RNGCryptoServiceProvider
или подобное) должно сделать эту работу на отлично.
Теперь обратите внимание, что если вам действительно требуются действительно случайные числа , вы можете использовать такой сервис, как Random.org , который генерирует числа с очень высокая случайность / энтропия (на основе атмосферный шум ). Данные свободно доступны для скачивания. Тем не менее, это может быть излишне сложно для вашей ситуации, хотя, безусловно, дает вам данные, пригодные для научных исследований и еще много чего.
В конце концов, выбор за вами, но, по крайней мере, теперь вы должны быть в состоянии принять информативное решение, зная о различных типах и уровнях ГСЧ.