2010-11-25 6 views
0

Je vous prie de ne pas me connaître car je ne suis même pas près de parler couramment le monde des mathématiques.Combinaisons imbriquées - options réparties sur plusieurs questions

Je suis en train d'analyser un test. Il se compose de quatre questions avec dix options chacune. Pour chaque question, trois options doivent être sélectionnées. Bien sûr, cela donne toujours un total de 12 réponses.

En analysant le nombre de combinaisons possibles en utilisant la combinaison []. De Ruby, mes stations de travail Dell se figent et ne produisent pas de valeurs raisonnables. Est-ce que ce calcul est vraiment si intense/grand?

En utilisant 40 options sur 12 réponses, je pensais que je devrais courir:

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

Je trouve aussi the Wikipedia article on Combination. Mais étant handicapé en maths, ça ne m'a pas vraiment rendu plus intelligent.

J'apprécierais follement n'importe quelle aide que je peux obtenir sur cette matière. Merci à tous.

secondaire/question suivi:

points de plus à tous ceux qui peuvent trouver une façon intelligente de générer toutes les combinaisons possibles. C'est nécessaire pour une application Ruby "offline" simulant toutes les réponses possibles. Mon cerveau est étourdi par l'analyse des docs - mais je n'arrive pas à trouver un moyen efficace d'accomplir cette tâche.

Idéalement, je aurais besoin d'un tableau géant contenant ints représentant les options choisies:

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

... serait par exemple représenter un scénario où la première question, deux, trois et quatre ont répondu à l'aide des options 0, 1 et 2.

+0

Qu'essayez-vous d'accomplir? Quel type d'information essayez-vous de retirer du calcul? Est-ce comme un sondage d'opinion ou un test à choix multiples. Vous aurez 12 options choisies mais quand vous regardez des "combinaisons" vous calculez combien de manières vous pouvez choisir 12 articles parmi les 40 possibles ... et c'est assez peu. En fait, ce n'est pas aussi mauvais que je le pensais à cause de la contrainte 3 sur 10. – Jaydee

Répondre

3

Le code que vous avez fourni demande toutes les façons de sélectionner 12 choses parmi 40 choses, ce qui est un nombre énorme (d'où votre machine se fige), mais, d'après votre description de votre situation, je ne pense pas que ce soit correct.

Chaque question doit être traitée séparément, qui est, vous voulez que le nombre de façons de choisir 3 choses de 10 choses:

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

imprimerait toutes les différentes façons de le faire Cela donne tous les moyens de répondre à une seule question (qui sera la même pour toutes les questions).

Cela devrait également fonctionner beaucoup plus rapidement car il s'agit d'un calcul beaucoup plus petit.

Vous multipliez ensuite le nombre de combinaisons pour chaque question afin d'obtenir le nombre total de façons de répondre aux quatre questions.

Mon calcul donne:

120 combinaisons par question.

120 * 120 * 120 * 120 = 207 360 000 combinaisons pour l'ensemble du test.

+0

'40C12' n'est pas * ça * énorme (c'est 5 586 853 480'), mais c'est possible, il est calculé naïvement, ce qui * causerait * des problèmes. Je suis d'accord avec vos calculs de la bonne réponse ('(10C3)^4'), cependant. – AakashM

+0

Spot sur cher Monsieur :) Vous avez sauvé ma journée! –

0

Je ne suis pas sûr, mais 10 réponses possibles, en choisissant 4, donnerait 210 possibilités. Ensuite, la réponse à la question 1 & 2 donnerait 210 * 210 = 44.100 possibilités. D'un autre côté, l'appariement des questions 3 & 4 donnerait 44.100 autres possibilités.

correspondant à 1 & 2 + 3 & 4 serait 1.944.810.000 possibilités

C'est tout à fait beaucoup de ... possibilités

Mais votre idée de 12 entre 40 donnerait un plus grand nombre d'environ 5.586.853.480.

sur combinatoires est pas une bonne idée Habituellement va brute avant- ...

PS: Je ne suis pas sûr de l'exactitude de mes chiffres ... il y a étudié cette longue période

+0

La réponse de Jonathan est plus précise (il prend 3 sur 10, alors que je fais miroiter et en prends 4 sur 10 ...) – SoulWanderer

1

Vous disposez de quatre ensembles de combinaisons «Choisir 3 sur 10».

S'il vous plaît s'il vous plaît, oh, s'il vous plaît dieu ne résout pas cela en produisant réellement toutes les combinaisons possibles! C'est pourquoi l'homme a inventé les mathématiques :-)

Un ensemble de « 10 choisir trois » a un certain nombre d'options égales (comme indiqué sur la page wikipedia vous avez accédé à):

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

Vous avez quatre ces questions, de sorte que vous multipliez le nombre de combinaisons possibles dans chaque question pour obtenir le nombre total de combinaisons pour le test.

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

... comme l'a montré Jonathan ci-dessus.

Questions connexes