5 votos

Algoritmo para elegir al azar tarjetas de aprendizaje

Estoy programación de un software de aprendizaje. Funciona con la pregunta-/answercards. Im buscando un algoritmo que me da una probabilidad mayor de las tarjetas que el usuario ha respondido mal.

Mi idea (edit: Inversa de la transformación de muestreo) es que cada tarjeta tiene un número entero que indica cuántas veces el usuario tiene answerd la pregunta equivocada. Contar todo entero, los valores, la creación de un entero aleatorio entre 0 y el contado entero, los valores y el uso de esta entero para ir a través de mis cartas y contar sus números enteros hasta que me llegó el entero aleatorio. Luego de alcanzar el entero elijo esta tarjeta :-)

Pero debe haber una solución mejor ;-)

Edit: El Rechazo De Muestreo

N = number of cards
M = score of the highest card
c = random (1 - N)
x = random (1 - M)

if (x <= (score of card-nr: c)) accept card!
else create new c & x and goto if-querry

Eso significa que las tarjetas con mayor puntuación será elegido con más frecuencia.

4voto

lhf Puntos 83572

Solución le parece ok si no te importa clasificar las cartas cada vez. Este es un método diferente: elige una tarjeta al azar y un número al azar de 0 a la puntuación máxima de la tarjeta. Aceptar la tarjeta elegida si el número es en la puntuación de la tarjeta. En caso contrario, repetir. Este método es muestras de rechazo en el gráfico de cuentas de la tarjeta.

2voto

John Fouhy Puntos 759

He aquí un algoritmo más eficiente, que requiere un poco de espacio. Mantener una tabla de búsqueda que contiene la tarjeta para escoger para cada valor de su entero aleatorio. La tabla es init dejando la celda $i$ de los puntos en la tarjeta de $i$. Al aumentar el protagonismo de la tarjeta de $j$, sólo tiene que añadir una nueva célula que apunta a $j$.

Si usted está en memoria inteligente, entonces usted puede utilizar el siguiente algoritmo. Poner todas tus tarjetas en un árbol binario equilibrado. Cada tarjeta mantiene su propio protagonismo y la suma de protagonismo de éste y de todos sus descendientes. Para seleccionar una tarjeta, utilizar el binario de búsqueda. Cuando se incrementa el protagonismo de una tarjeta, usted necesita para actualizar sus antepasados. Por lo tanto las operaciones de tomar un tiempo logarítmico.

0voto

Matthew Scouten Puntos 2518

Usted probablemente no quiere hacer los números iniciales 0 o nunca verás una nueva tarjeta, una vez que usted ha tenido una respuesta incorrecta a otra cosa.

0voto

Dan Kennedy Puntos 126

No, es la mejor manera de producir esa distribución. Quizá quieras añadir algo que poco a poco disminuye el peso de flashcards respondió correctamente o su total cuenta sólo mantenga inflado, que se convierte en un problema después de un tiempo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X