主要就是利用位的思想,把randN()当成一个生成N进制某一位的一个函数,然后生成M的整数倍,当大于M整数倍的时候重新生成
//rand1()生成0和1 使用ran1()生成0-5 思想用位 生成每一位 二进制111为7 生成大于5的时候重新生成
public int random5(){
int result;
do{
result=2*2*ran1()+2*ran1()+ran1();
}while(result>5);
return result;
}
//rand7() 生成1-7 完成ran10() 生成1-10 把ran7()当成生成一个七进制每一位的函数
public int rand10() {
int result;
do {
result = 7 * (rand7() - 1) + (rand7() - 1);
} while (result >= 40);
return result % 10 + 1;
}