问题:已知rand5生成rand7
可以证明:
若1
randX->[0, X-1]
则1
X*randX + randX -> [0, X^2 - 1]
那么1
2
3
4
5
6
7
8
9
10int rand7() {
int r = 0;
while (true) {
r = 5*rand5() + rand5();
if (r < 21) {
break;
}
}
return r % 7;
}