具體而言,如果您事先不知道行數,您將如何閱讀文本行,並選擇並打印一條隨機行?如何在不知道n的情況下隨機選擇n個對象中的一個?
是的,這是一個編程珍珠,我感到困惑的問題。
該解決方案選擇1st元素,然後選擇第二個概率爲1/2,第三個爲1/3,依此類推。
的算法:
i = 0
while more input lines
with probability 1.0/++i
choice = this input line
print choice
假設最終選擇是第三元件,所述概率是 1×1/2 X 1/3 X 3/4 X ... X n-2個/ n-1×n-1/n == 1/2n?但1/n應該是正確的。
選擇元素3的概率並不完全取決於在步驟1或2中選擇的內容。因此,這裏不包含1或1/2的項。然後是1/n。 –
謝謝。現在有道理。 – deepsky
很酷的問題,沒想過! – unkulunkulu