GitHub

Sorteo Universal

Designación por sorteo con verificabilidad universal

Prueba de concepto de selección por sorteo. A partir de una lista de candidatos (Censo) se crea otra lista (Seleccionados) ordenada aleatoriamente. Para llevar a cabo el sorteo se recurre a Mersenne Twister (MT19937), uno de los mejores algoritmos generadores de números aleatorios. Se ha usado esta versión en javascript. Mersenne Twister es de código abierto, portable y está traducido a múltiples lenguajes por lo que se puede reproducir facilmente en cualquier sistema para verificar el resultado, sin necesidad de Internet.

El algoritmo genera secuencias numéricas de ciclo largo, totalmente repetibles y verificables, a partir de una semilla. Cada semilla generará una secuencia única y uniformemente distribuida, de números en coma flotante de doble precisión comprendidos entre 0 y 1. A cada miembro de la lista se le asigna un valor aleatorio y luego se reordena la lista de menor a mayor. La casilla "seleccionados" determina dónde queremos truncar la lista de salida. La casilla "bloque" sirve para generar nuevas secuencias a partir de la misma semilla repitiendo el proceso n veces. Se ha limitado su valor máximo a 999 por razones de eficiencia computacional.

Para un sorteo verificable y transparente, se sugiere que el orden de la lista ordenada sea conocido de antemano (orden alfabético p.ej.) y usar números de lotería, o una combinación de estos, como semillas aleatorias. A modo de ejemplo se establece como semilla los números premiados del Sorteo Extraordinario de Navidad (El Gordo, España) de los años 1986, 2010 y 2011, concatenados en este orden.

Censo ()

Seleccionados

Parámetros

Semilla (solo números):

Bloque (solo números):