第乙個大概是我人生中的第一次面試遇到的問題吧。問題如下:如何隨機出0~n之間的整數,並且每次隨機出的數字不能相等但要求隨機出的每個數字的概率是相等的。作為乙個初涉計算機(雖然是研究生了,起步略晚)對自己又有極大自信的我,想出了各種方法,然後一一被面試官拍死。面試完後在《程式設計珠璣》的習題上看到了解法:
構造包含1-100的順序陣列s,陣列內的值等於其下標,最大的數是max=100。然後rand(0,max)出乙個數字n,之後把s[max]和s[n]交換資料,然後把max減一。後面一次迴圈,這樣可以保證每次取的數字不相等,又能保證概率都相等。如第一次取的話是0.01,那麼第二次取的概率根據概率論是第一次的概率乘以第二次的概率即(99/100)*(1/99)=0.01。以此類推,取所有數字的概率都為0.01。
第二個是如何用rand(5)構造rand(n)。這個問題的關鍵是產生的數字範圍要包含0~n,且產生0~n的概率相等。所以要用rand(k)*m+rand(k),這樣可以產生0~(km+k-1)的數,且每個數產生的概率都是相等,這樣只要km+k-1)是大於n的倍數的某個數,就能得到均勻分布的rand(n)了,所以這一題可用遞迴。
關於概率的一些定義
1.2.2 概率運算的基本法則 字型 大 中 小 a.互補定理 設某一事件發生的概率為p,則其不發生的概率為1 p,即p 1 p a 其中 為a的相反事件。所以,事件發生的概率與不發生的概率之和必然等於1,這就是互補定理。b.加法定理 設a和b為兩個互不相容的事件 又稱互斥事件 所謂互不相容即在同一...
A 演算法的一些總結
看拓撲狀態監控的一篇文章時發現提到了a 演算法,他的目的是提取拓撲中的重要拓撲資訊來進行監控,進而減少控制資訊消耗。覺得這個想法不錯,但具體a 演算法是怎麼樣的呢?於是找了一下資料,覺得下面這篇帶著例項講的不錯,比較直觀,雖說博主也是借他山之石吧,但還是總結歸納的不錯,排版也很清晰,點讚。理解a 演...
一些演算法的總結
各種排序演算法 穩定 直二冒歸基 插入排序 直接插入排序 左邊都是排好序的,右邊的依次和左邊的比較,插入到左邊合適的位置。它的基本思想是將乙個記錄插入到已經排好序的有序表中。當待排序陣列是有序時,是最優的情況,只需當前數跟前乙個數比較一下就可以了 最壞的情況是待排序陣列是逆序。歸併排序 二路歸併 將...