C#中的随机数种子「建议收藏」

C#中的随机数种子「建议收藏」C#中:  A.相同种子的随机数,具有相同的随机数序列。  比如:你的种子是123456,第一次调的时候,第一个随机数为N,那么,不管在什么地方调,它的第一个随机数都将为N,因为种子不变.但是这个随机数列表中的各项值,是随机的。也就是说,第二个随机数为N2..。  B.不同的种子具有不同的序列。  所以有Randomrdn=newRandom();

大家好,欢迎来到IT知识分享网。C#中:  


  A.相同种子的随机数,具有相同的随机数序列。  

  比如:你的种子是123456,第一次调的时候,第一个随机数为N,那么,不管在什么地方调,它的第一个随机数都将为N,因为种子不变.但是这个随机数列表中的各项值,是随机的。也就是说,第二个随机数为N2..。 


  B.不同的种子具有不同的序列。  

  所以有Random rdn = new Random(); 就是以当前时间为种子,用来长生不同的随机数。经常获得第一个随机数。

种子跟产生随机数的算法有关,事实上没有绝对真实的随机数,我们所说的随机数,其实是在一个初始数字的基础上(也就是种子)通过移位什么的得到的,那么,也就以为这,同一个种子,会总是得到相同的随机序列。

随机数种子就是产生随机数的源头机制是通过一个复杂(有时不是很复杂)的函数,将一个种子的值转化为随机数空间中的某一个点上(数),好的函数会产生很大的空间,并且产生的随机数均匀的散布在空间中。

如果应用程序需要不同的随机数序列,则使用不同的种子值重复调用此构造函数。一种产生唯一种子值的方法是使它与时间相关。例如,从系统时钟派生出种子值。

   但是,如果应用程序在一个较快的计算机上运行,则该计算机的系统时钟可能没有时间在此构造函数的调用之间进行更改,Random 的不同实例的种子值可能相同。这种情况下,请应用一个算法来区分每个调用的种子值。

例如,以下的 C# 表达式使用按位求补运算来生成两个不同的种子值,即使系统时间值相同也可以。

 
 
int seekSeek = unchecked((int)DateTime.Now.Ticks);

// int seekSeek = unchecked((int)DateTime.Now.Ticks);
   

Random seekRand = new Random(seekSeek);


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25188.html

(0)
上一篇 2023-07-23 13:00
下一篇 2023-08-05 20:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信