Crea una collezione con "punti medi" di N elementi da un pool con elementi di vari punti

1

Diciamo che ho un pool di domande per generare degli esami. Ogni domanda contiene una difficoltà da 1 (difficile) a 99 (facile). Le domande sono disponibili in un hash / array (si adattano alle tue lingue preferite, sto andando con hash in quanto è un'implementazione ruby) nel seguente formato:

questions = {
  :55 => [<#Question 1>, <#Question 18>],
  :8  => [<#Question 70>],
  :43 => [<#Question 105>]
}

Le chiavi hash indicano la difficoltà, mentre il valore è un elenco di domande con detta difficoltà.

L'obiettivo è quello di essere in grado di creare un "esame" con% di domande di condivisione del pool. Ogni esame generato dovrebbe contenere domande da "tutti" i livelli di difficoltà (non da ogni numero, ma avere domande con valutazioni inferiori, medie e superiori). Inoltre, ogni esame generato dovrebbe avere +/- la stessa difficoltà N (ad esempio 75).

Come si fa a selezionare domande da varie difficoltà in modo da avere a) un risultato di X dimensioni eb) corrispondente alla difficoltà media di N ?

    
posta pduersteler 01.10.2014 - 12:43
fonte

1 risposta

2

Stai imponendo tre vincoli qui:

  1. un numero totale specifico di domande
  2. diversi pool di domande di difficoltà simile, in cui l'esame deve contenere elementi di ciascun pool
  3. una difficoltà media predefinita

Come ha detto il maniaco del cricchetto, questo è un problema con lo zaino e quindi difficile da risolvere, sebbene se la lista di domande sia ragionevolmente piccola, una ricerca completa può ancora funzionare.

Tuttavia, se sei disposto a far variare la difficoltà media un po 'di più, puoi semplicemente scegliere un numero predefinito di domande a caso da ciascun pool, il che richiede solo uno sforzo lineare e quasi sempre produrrà una difficoltà media quasi totale . Forse, anche un approccio try-until-satisfactory è più economico del problema originale.

    
risposta data 01.10.2014 - 12:49
fonte

Leggi altre domande sui tag