今天做项目的时候,发现一段这个代码
var tick = DateTime.Now.Ticks; int seed = ((int)(tick & 0xffffffffL)) | (int) (tick >>32)); Random rnd = new Random (seed)
问一下这么做的意义是什么。
他的算法就是把Ticks前后32位分开并且按位或运算一下。有啥意义啊。
这样做和直接new Random()本人知道默认就是当前时间作为seed。这两种做法有什么区别吗?》
解决方案
5
没区别,只是种子不一样而已……
一般常见做法不用guid的hash值做种子么?
一般常见做法不用guid的hash值做种子么?
3
你去问这样写的人,Random()是用什么做种子的,估计答不上来
12
原因是bug全部凑数 –> 原因是bug、于是凑数
随机数发生器内部,当然还是有规律地计算 next 数值的。