目標:有乙個rand5函式可以隨機產生0~4這5個數,設計乙個rand7函式,利用這個rand5函式隨機產生0~6這7個數。
方法:面試這一題,第一想法就是要用編碼的思想。那麼想表達完所有的7個數需要呼叫兩次rand5函式,因為呼叫兩次rand5函式可以產生的組合為5*5個組合。那麼在看看
rand5()產生0,1,2,3,4,
rand5()*5產生0,5,10,15,20
發現rand5()*5+rand5()剛好可以產生從0~24這全部的25個數,因此方法出來了,利用上面的方法產生乙個新的數,如果這個數大於20,那麼重新再產生一次。否則直接將產生的數除以3就得到對應的數。
**
class solution
private:
int rand5()
};
再補充一下:
c++中沒有random()函式,c中呼叫stdlib.h標頭檔案則可以使用random(n)函式,這個函式返回0到n-1之間的隨機整數。c++中只有rand()函式,這個函式返回0到max_int之間的隨機整數。如果要取某個區間的隨機整數方法如下,
取[a,b)之間的數,(rand()%(b-a))+a
取[a,b]之間的數,(rand()%(b-a+1))+a
取(a,b]之間的數,(rand()%(b-a))+a+1
這下面的是從網友那裡摘錄的
通用公式:a + rand() % n;其中的a是起始值,n是整數的範圍。
要取得a到b之間的隨機整數,另一種表示:a + (int)b * rand() / (rand_max + 1)。
要取得0~1之間的浮點數,可以使用rand() / double(rand_max)。
html回爐重造
45 6走過一條寂寞的街角 期盼一張熟悉的微笑 一首老情歌聽溼了眼睛 繼續愛下去我會怎樣 如果不能完全的遺忘 時間是否真能夠療傷 面對這一身累積的痴狂 託付給誰有沒有罪 回憶再美好也只是曾經 守護是我們彼此的約定 風輕輕的吹 我們的歌謠 是誰唱著哄你入睡 走過一條寂寞的街角 期盼一張熟悉的微笑 一首...
發明輪子和學會發明輪子
一直以來,我都覺得現在中國的技術氣氛很浮躁.研究的都是別人的東西怎麼用,卻沒有辦法研究自己的技術.或許一直以來困擾我們的就是 不要重 明輪子 這句話.一直以來我們都認為自己不需要去研究底層的東西,因為那些輪子已經 發明 好了,不需要我們再去發明一次了.但是不需要重 明,不等於我們可以不會發明 輪子 ...
造輪子之我見
味,因為自己就是那一小撮喜歡造輪子的人!自己錯了,錯在哪呢?浪費時間?那麼很快的把事做完了,再做點啥呢!自己是個人英雄主義麼。想出頭麼,想要更多的公升職,加薪 麼,想要譁眾取寵麼!困惑,苦悶,壓力,壓抑,接踵而來。今天看了篇文章 似乎不光自己由此困惑,很多人或者說很多想要做輪子或者 正在造輪子的人 ...