已知有個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...