给定一个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()。
本文出自 “karsbin@stephy” 博客,请务必保留此出处http://karsbin.blog.51cto.com/1156716/961634