已知可生成0~4的rand5(),实现生成0~6的rand7()
Posted Carrie_0173
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知可生成0~4的rand5(),实现生成0~6的rand7()相关的知识,希望对你有一定的参考价值。
若已知生成0~6的rand7(),求生成0~4的rand5(),则一个方法就是不断生成0~7的数,直到这个数满足0~4就返回。
int rand5(){ int res; do{ res = rand7(); }while(res >4); return res; }
现在已知生成0~4的rand5(),求解生成0~6的rand7(),就是想办法利用rand5()去生成0~大于6的数字,可以使用rand5()+rand5()*5,这个式子可以生成0~24的随机数,每个数字的组成只有一种可能,所以是等概率地生成0~24里的每一个数字。
当0~24中大于6的数字可以对7取余得到0~6的数字,但是为了保证出现0~6的数字的每一个概率相同,我们只能在0~20(20=24/7*7-1)中去选择,大于20的数,要被舍弃。
所以实现代码为:
int rand7(){ int res; do{ res = rand5()+rand5()*5;//生成0~24的随机数 }while(res>=24/7*7); return res%7; }
参考地址:http://blog.csdn.net/u010025211/article/details/49668017
以上是关于已知可生成0~4的rand5(),实现生成0~6的rand7()的主要内容,如果未能解决你的问题,请参考以下文章
rand5()得到rand3()或rand7()类型题:通过rand n()实现rand m()
可生成高清视频的Stable Diffusion来了!分辨率提升4倍,超分算法来自腾讯,支持Colab在线试玩...
已知权函数=1+x^2,区间服[负1,1],求首项系数为1的正交多项式,n=0,1,2,3,4