已知可生成0~4的rand5(),实现生成0~6的rand7()
生活随笔
收集整理的這篇文章主要介紹了
已知可生成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
轉載于:https://www.cnblogs.com/Carrie-0173/p/6711031.html
總結
以上是生活随笔為你收集整理的已知可生成0~4的rand5(),实现生成0~6的rand7()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]数据库分库分表
- 下一篇: bookStore第二篇【图书模块、前台