全問題是產生一組m個整數:隨機從大小爲n的數組
寫隨機產生從大小
n
陣列的組m個整數的方法。每個元素都必須有被chosen`
這個問題是來自「破解編碼訪談」和解決方案採摘等概率是這樣的:
我們可以與元素的開頭交換元素的數組,然後「記住」數組現在只包含元素
j
和更大。也就是說,當我們選擇subset[0]
爲array[k]
時,我們用數組中的第一個元素替換array[k]
。當我們選擇subset[1]
時,我們認爲array[0]
爲「死亡」,我們從1到數組size()
之間挑選一個隨機元素y
。然後我們設置子集[1]等於array[y]
,並且設置array[y]
等於數組[1]。元素0和1現在「已死」。Subset[2]
現在從array[2]
到array[array size()]
之間選擇,等等。
我的問題是,如果我們正在縮小從中選取隨機數的數組,那麼每個數字被選中的概率爲1/remaining_num_elements
。所有元素如何保持平等?