日期:2014-05-18  浏览次数:20785 次

双核CPU下获取随机数问题.
在双核CPU下, 使用默认的时间种子获取随机数时发现会重复, 大家有没有什么好办法?

------解决方案--------------------
参考如下代码
C# code
Guid vGuid = new Guid();
byte[] vBuffer = vGuid.ToByteArray();
int vSeed = BitConverter.ToInt32(vBuffer, 0) ^ BitConverter.ToInt32(vBuffer, 4) ^
    BitConverter.ToInt32(vBuffer, 8) ^ BitConverter.ToInt32(vBuffer, 12) ^
    (Environment.TickCount & 0xFFFFFF);
Random vRandom = new Random(vSeed);

------解决方案--------------------
无论是双核还是单核...获取随机数时都会重复
解决问题有两种方法..
1将发生的随机数过滤,过滤掉重复的项,这种情况对应随机数大小不确定的情况.
2对于随机数大小,或范围确定的情况,可以使用顺序初始化,随机打乱的方案.