title | date | author |
---|---|---|
关于随机数的一些讨论 |
2020-08-31 19:50 |
mq |
linux下rand是线程安全的
- 错误姿势❌:
range = max-min // 溢出UB
return rand() % range + min // 模可能不均匀
- 正确姿势✔
umin = 移码(min)
umax = 移码(max)
range = umax - umin
// 这里就不说如何解决区间映射的问题了
其中移码
, 是把区间[INT_MIN, INT_MAX]
映射到[0, UINT_MAX]