C# Random(Int32).Next(minValue,maxValue)可以用作线性同余生成器吗?

C# Random(Int32).Next(minValue,maxValue)可以用作线性同余生成器吗?,c#,C#,能 是否用作一种线性同余生成器?是的,系统。如果给定相同的种子和边界,Random将始终提供相同的下一个值,常数是您可以选择提供的种子。因此,您不希望每次调用Next()时都像您的行那样更改种子,而是: System.Random(Int32).Next(minValue, maxValue) ; 是的,System.Random将始终提供相同的下一个值,给定相同的种子和边界,常数是您可以选择提供的种子。因此,您不希望每次调用Next()时都像您的行那样更改种子,而是: System.Ra


是否用作一种线性同余生成器?

是的,系统。如果给定相同的种子和边界,Random将始终提供相同的下一个值,常数是您可以选择提供的种子。因此,您不希望每次调用Next()时都像您的行那样更改种子,而是:

 System.Random(Int32).Next(minValue, maxValue) ;

是的,System.Random将始终提供相同的下一个值,给定相同的种子和边界,常数是您可以选择提供的种子。因此,您不希望每次调用Next()时都像您的行那样更改种子,而是:

 System.Random(Int32).Next(minValue, maxValue) ;

因此,答案是否定的,因为Random()在.NET中会随着版本的变化而变化。我不能使用Random(Int32).Next(minValue,maxValue)作为一种线性同余生成器。啊

因此,答案是否定的。因为Random()在.NET中会随着版本的不同而变化。我不能使用Random(Int32).Next(minValue,maxValue)作为一种线性同余生成器。啊

请注意,Random的实现在过去已多次更改。这意味着同一种子在不同的.NET Framework版本上给出不同的随机数。当.NET 5有一天发布时,它很可能会再次给出不同的数字。要继续Felheart所说的,如果您希望避免内部实现发生变化,从而导致同一种子的新序列,请使用具有良好定义行为的RNG。要做到这一点,一个简单的方法就是使用任何一个加密流芯片,读取从给定密钥中获得的字节流。请注意,Random的实现在过去已经改变了多次。这意味着同一种子在不同的.NET Framework版本上给出不同的随机数。当.NET 5有一天发布时,它很可能会再次给出不同的数字。要继续Felheart所说的,如果您希望避免内部实现发生变化,从而导致同一种子的新序列,请使用具有良好定义行为的RNG。一种简单的方法是使用任何加密流芯片,读取从给定密钥中获得的字节流。您必须编译针对特定版本的.Net的代码,因此,除非您更改目标框架并重新编译,否则您的程序将始终使用相同的随机实现。您必须编译针对特定版本的.Net的代码,因此,除非您更改目标框架并重新编译,否则您的程序将始终使用相同的随机实现。