c# – Microsoft不保证Random Edition的实现在.NET版本中保持不变的原因是什么?

前端之家收集整理的这篇文章主要介绍了c# – Microsoft不保证Random Edition的实现在.NET版本中保持不变的原因是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
引自 online documentation

Notes to Callers: The implementation of the random number generator in
the Random class is not guaranteed to remain the same across major
versions of the .NET Framework. As a result,your application code
should not assume that the same seed will result in the same
pseudo-random sequence in different versions of the .NET Framework.

是什么原因导致Microsoft不保证Random类的实现在.NET版本中保持不变?更具体地说,微软不保证同一种子在主要版本的.NET框架中产生相同的随机数序列的原因是什么?

解决方法

高度投票的帖子存在问题. Random类肯定会产生可预测的数字.从Random(Int32)构造函数的文档:

Providing an identical seed value to different Random objects causes each instance to produce identical sequences of random numbers.

微软不想承诺的是,这个序列在另一个.NET Framework版本中是相同的.这是有充分理由的,他们无法确定他们使用的算法是否完全没有缺陷.使使用Random类的代码易受攻击或易于产生偏差结果的类型.赔率非常低,但不是零.

有一个先例,最臭名昭着的案例是IBM在他们的大型机软件中使用的随机生成器的问题,称为RANDU.被称为“被广泛认为是有史以来设计最错误随机数发生器之一”.一旦分析师开始更好地审视它,它就有明显的缺陷.它于1963年首次被标记,但在20世纪70年代仍被广泛使用.

猜你在找的C#相关文章