回答您问题的最简单的方法可能是将您的问题反过来.

假设CryptoServiceProvider实现具有所有优点.它只是一样快,并且使用与Random.Next一样少的内存.

那么为什么这两个实现都存在?

为什么我们甚至在框架中有Random.Next?

看看我们对每个实现的了解.一个生成加密安全的随机数,另一个不作承诺.

哪个更简单?生成足够随机的用于加密的随机数,或产生简单地“看”随机的数字,但不保证任何其他数字?

如果没有与生成加密安全随机数相关联的成本,则每个随机数生成器将执行此操作.

你通常可以假设标准库函数的设计是在框上做的,做的很好. Random.Next被设计为尽可能高效地获得伪随机数序列中的下一个随机数.

CryptoServiceProvider旨在生成足够强大的随机数,以便在密码学中使用,并尽可能高效地执行此操作.如果有一种方法可以像Random.Next那样有效地执行此操作,那么Random.Next也会使用它.

您的问题似乎在框架设计师身上承担了脑部的伤害 – 即使有更快的方式,他们也以某种方式设计出不必要的缓慢的功能来生成加密安全的随机数.

生成加密安全随机数的最快方式很可能称为由专家设计的功能来生成加密安全随机数.

更多推荐

c#随机数生成编号_在C#中最快实现一个真正的随机数生成器