已知rand7()可以产生1~7的7个数(均匀概率),利用rand7()产生rand1

题目:已知rand7() 可以产生1~7的7个数(均匀概率),利用rand7()产生rand10()1~10(均匀概率)。

解析:首先利用rand7()产生1-5的5个数,每个数的概率为1/5,然后在这5个数的基础上再以1/2的概率加上5,这样就能以1/10的概率产生每一个数。

答案:

int rand10(){int tmp1,tmp2;do{tmp1=rand7();}while(tmp1>5);do{tmp2=rand7();}while(tmp2>2);return tmp1+5*(tmp2-1);}题目2:给定一个rand5(),,写出一个rand7()的函数。

方法1:先产生一个rand10()。

答案:

int rand10(){int tmp1,tmp2;tmp1=rand5();do{tmp2=rand5();}while(tmp2>2);return tmp1+5*(tmp2-1);}int rand7(){int tmp;do{tmp=rand10();}while(tmp>7);return tmp;}方法2:

int rand7(){int tmp;while((tmp=rand5()*5+rand5())>26); //随机产生6-26tmp-=3;//随机3-23tmp/=3;//随机1-7return tmp;}

学习不是人生的全部,但学习都征服不了,那我还能做什么?

已知rand7()可以产生1~7的7个数(均匀概率),利用rand7()产生rand1

相关文章:

你感兴趣的文章:

标签云: