我想知道是否有一种聪明的方法可以找到答案
事情发生了1/4的可能性.
我知道我们可以用rand()%4执行此操作并检查它是否等于0,但有没有办法不使用rand()?在c ++中,谢谢.
如果你的意思是想要避免许多rand()
实现的固有困难,你应该研究Boost Random库,它有几个高质量的pRNG(伪随机数生成器),以及许多控制输出的方法.该库也以略微修改的形式存在std::tr1
.
从来没有 过使用%用于截断PRNG值转换为范围.大多数PRNG具有相对非随机的低阶位.
对于您的情况,使用像BCS建议的分区(RAND_MAX/n).