标签:随机数生成器 cti logs 范围 bsp 映射 进制 拓展 dong
方法一:生成两个(1,5)的随机数,这样一共是25种情况,注意这两个数是有顺序的,从这25种情况中,取前21种,每三种代表(1,7)中的一个数字,如果取到的是这21种以外的情况,丢掉重新取。
方法二:生成三个(1,5)的随机数,分别表示一个二进制位,其中1和2映射为0,3跳过,4和5映射为1。这样产生的三位二进制数,即1-8这8个数字都是等概率的。如果产生的是8,那么丢弃即可。
int random_n() { int val = 0 ; int t; // t为n最大倍数,且满足 t <= m * m do { val = m * (random_m() - 1) + random_m(); } while (val > t); return val; }
随机数范围拓展,如:根据(1,5)随机数生成器,生成(1,7)之内的随机数
标签:随机数生成器 cti logs 范围 bsp 映射 进制 拓展 dong
原文地址:https://www.cnblogs.com/looploop/p/9728669.html