Это отличный вопрос, и я подозреваю, что ответ (как предположил Хенк) более теоретический. Аппаратный компонент может использоваться для генерации белого шума, а затем дискретизироваться и использоваться в качестве аппаратного RNG. В теории это было бы «более случайным», чем использование таймингов из системы.
На практике, однако, RNG подвергаются испытаниям, когда они проходят сертификацию FIPS . RNGCryptoServiceProvider прошел сертификацию FIPS 140-2 (источник: http://technet.microsoft.com/en-us/library/cc750357.aspx)
Некоторые ответы основаны на неправильном представлении о том, что, поскольку программный ГСЧ использует известные источники для своих входных значений, эти входные значения можно отслеживать и обнаруживать начальное число.
Это не настоящая слабость (если бы это было то же самое, что можно сказать о аппаратном ГСЧ, мы могли бы отслеживать его текущее (одиночное?) Значение и определить начальное число)
Слабым местом (если таковое имеется) является то, что большинство программных ГСЧ используют входные источники, которыми можно манипулировать (до некоторой степени) в программном обеспечении. Это позволило бы чрезвычайно хорошо продуманному вредоносному программному обеспечению манипулировать оборудованием до точки, где ГСЧ выводит предсказуемое (то есть неслучайное) число.