.NET中用于生成随机数的算法是什么?

Onl*_*ind 2 .net c# random

当我使用Random.Next()框架使用的算法返回给我一个"伪随机"数字?

我读了一下线性同余发生器.这是.NET使用的技术吗?

编辑:

我查看有关课程的文档Random,但这是一项着名的技巧?这个算法有一个名称作为例子(线性同余生成器)?

Joe*_*orn 6

检查这类文件的文档通常是值得的:

Random类的当前实现基于Donald E. Knuth的减法随机数生成器算法.有关更多信息,请参阅DE Knuth."计算机编程的艺术,第2卷:半数值算法".Addison-Wesley,Reading,MA,第二版,1981.

这让我想到了这个:

http://rosettacode.org/wiki/Subtractive_generator

另外值得一提的是,来自同一个MSDN文档:

例如,要生成适用于创建随机密码的加密安全随机数,请使用从System.Security.Cryptography.RandomNumberGenerator派生的类,例如System.Security.Cryptography.RNGCryptoServiceProvider.

具体来说,由于第二个链接中的此语句,常规Random算法很弱:

任何观察连续数字的人都可以预测下一个数字

在哪里并不像你想象的那么大.