从范围生成随机整数我需要一个函数,它将在给定的范围内生成一个随机整数(包括边框值)。我没有不合理的质量/随机性要求,我有四个要求:我需要它快点。我的项目需要生成数百万(有时甚至数千万)随机数,而我当前的生成器功能已经被证明是一个瓶颈。我需要它是合理的统一(使用兰特()是完全好的)。最小-最大值范围可以是从<32727,1>到<-32727,32727>的任何范围.它必须是可播种的。我现在有以下C+代码:output = min + (rand() * (int)(max - min) / RAND_MAX)问题是,只有当rand()=rand_max(对于Visualc+是1/32727)时才返回它不是真正的一致-max。对于诸如<-1,1>这样的小范围来说,这是一个主要问题,因为最后一个值几乎永远不会返回。于是我抓起笔和纸,提出了以下公式(它建立在(Int)(n+0.5)整数四舍五入技巧的基础上):但它仍然没有给我统一的分布。重复运行的10000个样本给我的比率为37:50:13的数值-1,0。1.你能推荐更好的配方吗?(甚至整个伪随机数产生函数)
- 3 回答
- 0 关注
- 478 浏览
添加回答
举报
0/150
提交
取消