假设rand7()是给定的某一个能返回某一范围内值得等概率函数
public int rand7() {
  //这个是系统随机的,具体实现我们是不知道的
return (int)(Math.random() * 7) + 1;
}
先将系统给的函数转化为0,1的古典概型函数
public int randHalf() {
int t;
do {
t = rand7();
}while(t == 4);
return t > 4 ? 0 : 1;
}

看最后值得要求范围看需要多少位二进制表示
public int rand10() {
int t;
do {
t = (randHalf()) + (randHalf() << 1) + (randHalf() << 2) + (randHalf() << 3);
}while(t >= 10);
return t + 1;
}