各位大佬 ,在做压测时需要随机的长度定长 (40),不相同的字符串,但在跑脚本时发现并发高的情况下 出现随机数会有相同的情况,各位大佬有什么好方法解决么?我使用的是 Go 语言,别的语言也行,有啥比较好的解决方法么?
start := time.Now().UnixNano() num, _ := rand.Int(rand.Reader, big.NewInt(100)) a := int(num.Int64())
我举个游戏的例子。对于游戏随机来说,如果采用时间戳来生成随机种子,高并发下是有可能产生一样的数值的(比如你用秒级别的时间戳,是很容易出现的)。所以如果你让我来高并发随机一定不一样的字符串,我可能会试一下毫秒级的时间戳(13 位)+ 唯一的自增 id(例如游戏中的 playerid)来确保绝对不会出现相同的情况。自增 id 要定多少位,就看你需要并发多少了。反正唯一 id 和毫秒时间戳 13 位,组成 40 位应该还有不少剩余位的,剩余位定一样或者不一样的字符串应该就无所谓了。 我实际没做高并发取随机过,就说个想法~~
额,看了一下你的贴子,你刚好就是搞游戏的嘛。。。那上面就不难理解了。