1
我想隨機向量畫5個號碼與替換隨機得出:與排除限制
myvector <- c(1:50)
draws <- sample(myvector,5,replace=F)
然而,要包括一些限制。
排除1:我不想畫兩個10和11一起
排除2:我只希望有以下一個:17,18,19,20。
但每個號碼應該具有相同的概率算法開始之前繪製。我的想法而已違反這個條件:分配相同數量的排除和從中得出:
myvector.wrong <- c(1:9,10,12:17,21:50)
draws.wrong <- sample(myvector.wrong,5,replace=F)
#say we draw a 17:
draws.wrong[1] <- 17
#then replace the 17 with a randomly drawn number from c(17:20)
draws.wrong[draws.wrong==17] <- sample(c(17:20),1)
然而,這意味着,在C每個號碼(17:20)只具有偶然性的四分之一到與沒有限制的數字相比較。我只希望這樣的機會減少(0)一旦排除一個數量已經繪有相同的機會,因爲任何其他。我可以包括17次四次,但後來我冒了兩次,這正是我想要避免的。
迭代,這將是更容易:每個後得出檢查是否有任何的排除號碼的繪製(如10),並再次在繪圖之前刪除相應的排除數字(10和11)。不過,我會開展了大量(50K通常,有時500K)本工序的重複這樣的效率是一個問題。
贊成嗎?
感謝您的回答載體!我也考慮過這個問題,但效率不高,因爲我會畫出一些我將再次丟棄的組合。另外,R不應該是循環緩慢?雖然我真的很喜歡這個想法! –
50-500k在不同的運行。 –
@PeterPan,這是一個很好的問題。儘管如此,我想不出更快的解決方案。祝你好運! –