已知可生成0~4的rand5(),实现生成0~6的rand7()
生活随笔
收集整理的這篇文章主要介紹了
已知可生成0~4的rand5(),实现生成0~6的rand7()
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
若已知生成0~6的rand7(),求生成0~4的rand5(),則一個(gè)方法就是不斷生成0~7的數(shù),直到這個(gè)數(shù)滿足0~4就返回。
int rand5(){int res;do{res = rand7();}while(res >4);return res; }現(xiàn)在已知生成0~4的rand5(),求解生成0~6的rand7(),就是想辦法利用rand5()去生成0~大于6的數(shù)字,可以使用rand5()+rand5()*5,這個(gè)式子可以生成0~24的隨機(jī)數(shù),每個(gè)數(shù)字的組成只有一種可能,所以是等概率地生成0~24里的每一個(gè)數(shù)字。
當(dāng)0~24中大于6的數(shù)字可以對(duì)7取余得到0~6的數(shù)字,但是為了保證出現(xiàn)0~6的數(shù)字的每一個(gè)概率相同,我們只能在0~20(20=24/7*7-1)中去選擇,大于20的數(shù),要被舍棄。
所以實(shí)現(xiàn)代碼為:
int rand7(){int res;do{res = rand5()+rand5()*5;//生成0~24的隨機(jī)數(shù)}while(res>=24/7*7);return res%7; }?參考地址:http://blog.csdn.net/u010025211/article/details/49668017
轉(zhuǎn)載于:https://www.cnblogs.com/Carrie-0173/p/6711031.html
總結(jié)
以上是生活随笔為你收集整理的已知可生成0~4的rand5(),实现生成0~6的rand7()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [转]数据库分库分表
- 下一篇: bookStore第二篇【图书模块、前台