一道題 由rand5 實現rand7

2021-08-17 03:02:44 字數 625 閱讀 8191

程式設計題目:已知有乙個函式rand()可以生成1~5之間的整數隨機數,其結果每個數的概率均勻分布,嘗試寫出乙個可以生成1~7之間的整數隨機數的函式,且每個數均勻分布。

解法:題目需要乙個能夠獲得1~7之間整數的函式,並且得到每個數的概率都是嚴格的1/7。

如果只是得到1-7的話很簡單,例如 (rand() + rand() % 3),但這樣的話,每個數的概率不同,例如7只能由5+2一種組合得到,概率是1/25,而4可以由2+2、3+1和4+0三種組合得到,概率是3/25。順著這個思路,我們需要想乙個公式或演算法,讓每個數出現的概率相同。

下面是我給出的解法:

int getrandom1_5()

int main()

; int radomnum;

int i;

srand((unsigned int)time(null)); //以時間為種子,time()精確到s

for (i = 0; i < 10000; i++)

numcount[radomnum - 1]++;

//usleep(200);

}for (i = 0; i < 7; i++)

return

0;}

演算法題 rand5 產生rand7

前兩天,睡覺前,偶爾翻起演算法導論,看到隨機函式這一塊內容,裡面有乙個練習題 5.1 2 描述random a,b 過程的一種實現,它只呼叫random 0,1 作為a和b的函式,你的程式的期望執行時間是多少?注 random a,b 為產生a,a 1,a 2,b的函式發生器,且產生各整數的概率相等...

由隨機數rand5實現隨機數rand7

rand7表示生成隨機數1,2,3,4,5,6,7 要通過rand5構造rand7現在可能沒有什麼思路,我們先試著用rand7生成rand5 rand7生成rand5很簡單,把6和7排除掉就是rand5了,也就是當隨機到大於5的時候,就再隨機一次,直到小於等於5 寫起來很容易 public stat...

由一道C 題所想到的

前段時間在睿思上 vivianliu出了如下一道c 題目 給定乙個類 class mycl protected virtual int geta int main 可見輸出是乙個未初始化的a。先上 吧 class myder mycl 同樣是派生乙個子類 int main 為下文修改記憶體分配策略 ...