给定一个rand7()函数可以生成1-7的随机数,如何通过rand7()函数构造出rand10()函数,使得rand10()函数可以生成1-10的随机数(显然要求概率平均)。

这道题是个概率问题。

显然一次rand7()不行。

2次可生成1-49的均匀随机数。

取其中10个即可。

int a = rand7() , b = rand7() ;

while( a * 7 + b < 40 ) a = rand7() , b = rand7();

return a*7+b-39;

由上可知:通过一个randi()函数可以生成任意的randj()。