Самый простой способ ответить на ваш вопрос - перевернуть вопрос с ног на голову.
Предположим , что реализация CryptoServiceProvider обладает всеми преимуществами. Он такой же быстрый и использует столько же памяти, сколько и Random.Next.
Тогда почему существуют обе реализации ?
Почему у нас даже есть Random.Next в рамках?
Посмотрите, что мы знаем о каждой реализации. Один генерирует криптографически безопасное случайное число, другой не дает обещаний.
Что проще? Генерация случайных чисел, достаточно случайных для использования в криптографии, или генерация чисел, которые просто «выглядят» случайными, но не гарантируют что-либо еще?
Если бы не было затрат, связанных с генерацией криптографически безопасных случайных чисел, то каждый генератор случайных чисел сделал бы это.
Обычно можно предположить, что стандартные функции библиотеки предназначены для того, чтобы делать то, что написано на коробке, и делать это хорошо. Random.Next предназначен для того, чтобы максимально эффективно получить следующее случайное число в последовательности псевдослучайных чисел .
CryptoServiceProvider предназначен для генерации случайных чисел, достаточно сильных для использования в криптографии, и делает , что , максимально эффективно. Если бы был способ сделать это так же эффективно, как Random.Next, то Random.Next использовал бы его слишком .
Ваш вопрос, похоже, предполагает повреждение мозга со стороны разработчиков каркаса - что они каким-то образом разработали ненужную медленную функцию для генерации криптографически безопасных случайных чисел, даже если был более быстрый способ.
Самый быстрый способ генерирования криптографически защищенных случайных чисел, скорее всего, вызовет функцию, разработанную экспертами для генерации криптографически защищенных случайных чисел.