2010-11-25 23 views
0

請隨身攜帶,因爲我甚至都不熟悉數學世界的流利程度。嵌套組合 - 選項遍佈多個問題

我正在分析測試。它由四個問題組成,每個問題有十個選項。從每個問題中,必須選擇三個選項。當然總是會得到12個答案。

使用Ruby的[] .combination分析可能的組合數量,我的Dell工作站凍結並且無法產生理智的值。這個計算真的非常激烈/大嗎?

使用40個選項超過12個答案,我想我應該運行:

[0...39].combination(12){|x| p x } 

我還發現the Wikipedia article on Combination。但在數學方面受到阻礙,它確實沒有讓我變得更聰明。

我會瘋狂地感謝任何幫助,我可以得到這件事情。謝謝大家。

中學/跟進的問題:

加分的人誰可以想出一個聰明的辦法來產生所有可能的組合。它是模擬所有可能的答案的「脫機」Ruby應用程序所必需的。我的頭腦對分析文檔感到頭暈 - 但我似乎無法找到實現此任務的有效方法。

理想情況下,我需要表示的一個選項巨型含陣列整數選自:

[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]] 

...將例如代表,其中問題的一個,兩個,三個和四個,使用選項0回答的場景中, 1和2.

+0

你想達到什麼目的?你想要計算出什麼樣的信息?這就像是民意測驗或多項選擇測試。您將有12個選項被選中,但是當您查看「組合」時,您正在計算有多少種方法可以從可能的40箇中選擇12個項目......並且這是很多。事實上,由於10分之3的限制,它並沒有我想象的那麼糟糕。 – Jaydee 2010-11-25 15:43:03

回答

3

你提供的代碼是要求從40個事物中選擇12個事物的所有方法,這是一個巨大的數字(因此爲什麼你的機器會凍結),但是從你描述你的情況的方式來看,我認爲這是不對的。

每個問題應該分開處理,也就是你想要的選擇3件事情的方式從10對事物的數量:

[0...9].combination(3) {|x| p x } 

將打印出來做的所有不同的方式,使這給所有方式回答一個問題(對於所有問題都是一樣的)。

這也應該運行得更快,因爲它是一個小得多的計算。

然後,您可以乘以每個問題的組合數,以獲得回答所有四個問題的方法總數。

我的計算結果如下:

每個問題120個組合。

整個測試的120 * 120 * 120 * 120 = 207,360,000個組合。

+0

`40C12`不是*巨大的(它是`5 586 853 480`),但它是可能它是天真計算的,哪些會導致問題。但我同意你對正確答案的計算(`(10C3)^ 4`)。 – AakashM 2010-11-25 15:56:48

0

我不確定,但10個可能的答案,選擇4,會給210個可能性。

然後,匹配問題1 & 2將給出210 * 210 = 44.100的可能性。另一方面,匹配問題3將會給出其他44.100個可能性。

匹配1 & 2 + 3 & 4將1.944.810.000 possibilites

這是相當多的possibilites的...

但是你的12 40之間的想法會給出一個比較大的數字,約爲5.586.853.480

通常會蠻力脫穎而出在組合子是不是一個好主意......

PS:我不知道我的號碼的準確性......這個研究很久以前

+0

喬納森的回答更準確(他在10分中取得3分,而我卻以10分4取得...) – SoulWanderer 2010-11-25 16:10:33

1

你有什麼是四組「選擇3的10」組合。

請上帝請哦,上帝不要通過實際生產所有可能的組合來解決這個問題!這就是爲什麼男人發明了數學:-)

一個「10選三」集有多種選擇等於(維基百科頁所示鏈接到您):

10!/((10-3)! * 3!) 
= 10!/(7! * 3!) 
= (10!/7!)/3! 
= (10 * 9 * 8)/(3 * 2 * 1) 
= 720/6 
= 120 

你有四這些問題,所以你乘以每個問題的可能組合的數量,以獲得測試組合的總數。

120 * 120 * 120 * 120 
= 207,360,000 

......就像喬納森在上面顯示的那樣。