Probability
Shuffle Card
Write a method to shuffle a deck of cards. It must be a perfect shuffle - in other words, each 52! permutations of the deck has to be equally likely. Assume that you are given a random number generator which is perfect
抽出的52!組合是同機率 1/52!
抽的數字從array後面選,選完之後swap,之後每次選都是沒抽過的數字
Select a random number from stream with equal probability
Given a stream of numbers, generate a random number from the stream. You are allowed to use only O(1) space and the probability of each number is 1/n, n is the number seen so far
init a count as 0, means the number has been seen so far
for each number x, generate ran number 0 to count-1. If ran is count-1, set ans to ran
對於每一個數字而言, 當下被選中的機率是1/n
之後每次iteration, 若n2沒被選中 (n-1)/n, 保留的數字可能是n-1中的一個 1/(n-1) => (n-1)/n * 1/(n-1) = 1/n => 機率仍然是 1/n
Last updated
Was this helpful?