面試題 利用rand7模擬rand10

2021-07-06 10:53:45 字數 858 閱讀 8769

已知有個rand7()的函式,返回1到7隨機自然數,讓利用這個rand7()構造rand10() 隨機1~10。

rand7只能為1-7之間的數,如何讓他模擬1-10間的數呢?

肯定要通過概率性的公式進行換算才行!

首先想到的是將其擴大,擴大到多少合適呢?一想想7的倍數,還是10的倍數,想想覺得50左右即可,所以直接用:

rand7*7+rand7(這裡是兩個隨機)

然後再寫邏輯 (當然,這裡也有一些邏輯上不是特別嚴密的地方,但這樣精度差不多滿足了。。)

1-5為 1

6-10為2…

…(依次類推)

40-45為9 …

46-50為10

(去掉注釋內容就能列印了)

// rand7模擬rand10

結果第一行為隨機的數

第二行為 概率

利用rand7 構造rand10

題意 已知有個rand7 的函式,返回1到7隨機自然數,讓利用這個rand7 構造rand10 隨機1 10 參考 int rand7 intrand10 while x 40 return x 10 1 解析 要保證rand10 均勻生成1 10的隨機數,可以構造乙個0 10n的隨機數區間,這樣通...

面試題系列(7)

84.將文字轉為數字 atoi,atof 將數字轉為文字 sprintf 86.加強記憶 mfc clist carray cstring cmap 雜湊表 mfc集合類 資料結構 演算法流程 c stl標準模板庫 std list vector string map 二叉樹 通用容器類,面試時考察...

c c 筆試面試題 7

我沒有記錯的話是一道msn的筆試題,網上無意中看到的,拿來做了一下。題目是這樣的,給定乙個字串,乙個這個字串的子串,將第乙個字串反轉,但保留子串的順序不變。例如 輸入 第乙個字串 this is zhuxinquan s chinese site http www.zhuxinquan.com cn...