性能测试工具 测试中生成随机数

makeshitangry · 2021年07月24日 · 最后由 陈随想 回复于 2021年07月25日 · 2664 次阅读

各位大佬 ,在做压测时需要随机的长度定长 (40),不相同的字符串,但在跑脚本时发现并发高的情况下 出现随机数会有相同的情况,各位大佬有什么好方法解决么?我使用的是 Go 语言,别的语言也行,有啥比较好的解决方法么?

共收到 2 条回复 时间 点赞
start := time.Now().UnixNano()
  num, _ := rand.Int(rand.Reader, big.NewInt(100))
   a := int(num.Int64())
makeshitangry 关闭了讨论 07月25日 13:50
makeshitangry 重新开启了讨论 07月25日 13:50

我举个游戏的例子。对于游戏随机来说,如果采用时间戳来生成随机种子,高并发下是有可能产生一样的数值的(比如你用秒级别的时间戳,是很容易出现的)。所以如果你让我来高并发随机一定不一样的字符串,我可能会试一下毫秒级的时间戳(13 位)+ 唯一的自增 id(例如游戏中的 playerid)来确保绝对不会出现相同的情况。自增 id 要定多少位,就看你需要并发多少了。反正唯一 id 和毫秒时间戳 13 位,组成 40 位应该还有不少剩余位的,剩余位定一样或者不一样的字符串应该就无所谓了。
我实际没做高并发取随机过,就说个想法~~

额,看了一下你的贴子,你刚好就是搞游戏的嘛。。。那上面就不难理解了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册