jorgealonsomar / TFGII-Quiz-Grafos

Trabajo de Fin de Grado. Grafos.
1 stars 0 forks source link

Definir una estrategia para generar la semilla #13

Closed clopezno closed 9 years ago

clopezno commented 9 years ago

Implementar esta funcionalidad.

public abstract class Pregunta {

    private Grafo grafo;

    protected Texto titulo;
    protected Texto enunciado;
    protected Texto parteAResponder;
    protected Texto respuestaCorrecta;

    private String semilla = "?????";
.....
jorgealonsomar commented 9 years ago

¿Cómo se supone que funciona una semilla? ¿Se crea una semilla con un valor aleatorio al generar una pregunta y el programa debe encargarse de recordar que el valor de esa semilla se asocia a los valores de esa pregunta?

¿Realmente es una funcionalidad que merezca la pena implementar? Porque lo puse ahí porque vi que los del otro trabajo la tenían, pero no acabo de ver una especial utilidad a volver generar una pregunta vieja.

jjrodriguez commented 9 years ago

La utilidad de que cada pregunta tenga asociada una semilla es que se pueda volver a generar la misma pregunta. Eso puede ser necesario si se localiza una pregunta que está mal y se quiere encontrar el fallo. Si tenemos un error que tiene una probabilidad del 0,01%, si generamos las preguntas de modo aleatorio esperando que el error se repita tendríamos que generar montones de preguntas y andar comprobando si tienen o no ese error.

Cuando creas las preguntas las semillas pueden ser aleatorias.

jorgealonsomar commented 9 years ago

He hecho que cada pregunta tenga asignada una "semilla", que actúa como un código, dado que contiene toda la información de la pregunta (el tipo, el nº de nodos, si el grafo es dirigido, la matriz de adyacencia del grafo) codificada en una cadena de no demasiada longitud.

Tengo entendido que el conceto de semilla normalmente se asocia a la generación de números aleatorios, y dado que aquí su uso es diferente, me pregunto si el empleo del término "semilla" sigue siendo válido. Pero en cualquier caso, éstas se pueden utilizar en el programa para recuperar cualquier pregunta que se haya generado previamente, como era su objetivo.

jjrodriguez commented 9 years ago

Aquí el concepto de semilla también tiene que ver con generar números aleatorios.

Si vas a generar 100 preguntas del mismo tipo, vas a usar el generador de números aleatorios para que sean distintas. Como queremos que se pueda volver a generar la misma pregunta, necesitamos tener una semilla para que el generador de números aleatorios genere los mismos.

Entonces al generar una pregunta recibirás una semilla, que puede ser una que ya tenemos o si no lo que hay que hacer es obtener una semilla aleatoria, con el propio generador de números aleatorios.