DarwinBotsManual
Abrir la app EnglishEN

Semillas y reproducibilidad

Qué es la semilla de una simulación, cuándo dos corridas son idénticas, cuándo son válidas pero no idénticas, y cuántos mundos distintos hay de verdad.

Muchas páginas del manual te mandan acá con la misma promesa: «misma semilla, misma simulación». Esta página la cumple y agrega lo que suele quedar en el camino: qué es exactamente esa semilla, qué no se repite nunca aunque quieras, y por qué dos semillas distintas pueden dar el mismo mundo.

Qué es la semilla

La semilla es el número que arranca el generador de azar del mundo. El motor no tira dados: usa un generador de números pseudoaleatorios, una máquina que produce una secuencia larguísima de números que parece azar pero es pura matemática. La semilla es el punto de esa secuencia donde arranca.

Todo lo que el motor sortea sale de esa única secuencia, en orden: dónde nace cada bot sembrado, dónde caen los obstáculos y teleporters del escenario, qué mutación sale en cada parto, dónde reaparecen los vegetales que repuebla el motor, y los sorteos de cada fase del ciclo (ver El ciclo y el orden de las acciones). Como todo sale de la misma secuencia en el mismo orden, cambiar el punto de partida cambia toda la historia.

De ahí la regla que leíste en todos lados: el mismo escenario, con el mismo ADN en cada especie, y la misma semilla dan la misma simulación, ciclo a ciclo. No «parecida»: idéntica. Mismas posiciones, misma energía, mismos nacimientos y muertes en los mismos ciclos.

En la app la semilla es un entero entre 1 y 2147483646. Se elige al lanzar la simulación, en la columna derecha de Experimentar, con un dado (🎲, Otra semilla al azar) por si querés sortear una; el escenario no la guarda (ver Escenarios). Otros lugares donde aparece:

Cuándo dos corridas son idénticas

La lista completa de lo que tiene que coincidir es corta:

Tiene que coincidirQué abarca
El escenarioParámetros del mundo, especies (cuáles, cuántas, con qué color), objetos.
El ADNEl de cada especie: si el escenario referencia un bot por nombre, el mismo bot; el Bestiario es el mismo para todos.
La semillaEl punto de partida del azar.
La versión del motorEntre versiones de la app puede cambiar algún detalle del motor y con él la corrida.

Si las cuatro coinciden, las dos corridas son la misma, y no importa dónde: la misma configuración en cualquier navegador, en tu máquina o en la de un amigo, arranca el mismo mundo y sigue el mismo camino.

Los cambios que le hacés a una simulación en caliente no rompen nada: quedan registrados con el ciclo en que entraron y se guardan con la corrida. Por eso una réplica puede repetir tu corrida entera, aplicando cada cambio en su mismo ciclo (ver Experimentar).

Válidas pero no idénticas: retomar

Hay un caso en el que una corrida sigue siendo válida pero no idéntica a como habría seguido: retomar una corrida guardada, o cargar un .dbsim.

El archivo guarda el mundo (bots, posiciones, energía, lazos, los disparos en vuelo), pero no la posición exacta del generador de azar. Al cargar, la app vuelve a sembrar el azar con la semilla de la corrida, como si la secuencia empezara de nuevo. A partir de ahí todo es legal: los sorteos siguen saliendo bien, pero de otro lugar de la secuencia, así que el futuro no es el que habría tenido la corrida si nunca la hubieras guardado. Es el comportamiento del original y de la interfaz clásica, no un defecto del port. La historia de métricas, los eventos y el linaje tampoco van adentro del archivo: quedan con la corrida guardada en el navegador (Formatos de archivo).

Lo que sí está garantizado: el mismo archivo cargado en cualquier navegador sigue igual. La carga es siempre la misma, así que tu corrida retomada acá y en otra máquina toma el mismo camino. El ADN de una especie que el archivo no traiga se repone buscando el bot por su nombre, y los pocos ajustes que el formato no guarda se reescriben siempre con el mismo valor. Los bots del Bestiario están en cualquier navegador; los tuyos, exportalos antes (ver Tus datos).

En la práctica: para seguir mañana donde la dejaste, retomá tranquilo (Inicio). Para que otro repita tu corrida desde el arranque, no le pases el .dbsim: pasale el escenario exportado y la semilla (ver las recetas de abajo). Cómo se guarda una corrida y qué trae el archivo está en Observar y Formatos de archivo.

Cuántos mundos hay de verdad

La pregunta incómoda: con 2.147.483.646 semillas para elegir, ¿cuántos mundos distintos puede darte el motor? La respuesta: 65.536.

El generador tiene un estado interno de 24 bits (16.777.216 valores), pero al arrancar una simulación solo 16 de esos bits salen de la semilla: el motor siembra el azar dividiendo la semilla por 100 y mezclando los bits del resultado, y de esa mezcla sobreviven 16 bits. Es una herencia del original que el port reproduce bit a bit. Con 65.536 mundos, cada uno lo comparten en promedio unas 32.768 semillas.

Que dos semillas «distintas» den el mismo mundo no es raro: entre las primeras 20.000 semillas hay 473 que repiten el mundo de otra. Algunos pares, comprobados corriendo el motor: 12345 y 73151 dan exactamente la misma corrida; también 1234 y 66184, y 49 y 807. La 12346, en cambio, da otro mundo. Dos semillas gemelas no son «parecidas»: son el mismo mundo, y si las comparás vas a comparar una corrida consigo misma.

Dentro de una corrida, el generador recorre sus 16.777.216 estados antes de repetir la primera extracción; como una simulación con población consume miles de extracciones por ciclo, la secuencia no se te va a acabar.

La app conoce el asunto y te cubre:

Lo que garantiza la app

Recetas

QuerésHacé
Repetir exacto una corridaEn Experimentar, abrí el mismo escenario, escribí la misma Semilla y tocá Nueva simulación. Si la corrida tenía cambios en caliente, usá Réplicas en Analizar: la primera repite la corrida entera, con sus cambios en el mismo ciclo.
Repetir un partidoEn Competir, pestaña Partidos, ↻ Repetir: mismas reglas, participantes, orden de siembra y semilla.
Comparar mundosRéplicas en Analizar: hasta 64 corridas del mismo escenario con semillas que no repiten mundo, con media, banda y desvío. Para dos corridas sueltas, mirá si el informe avisa que las semillas dan el mismo mundo.
Compartir tu corridaPara que otro la siga desde donde la dejaste: Guardar → Descargar .dbsim en Observar. Para que la repita exacta desde el arranque: Exportar el escenario y pasale también la semilla.
Probar si un resultado fue suerteCorré varias semillas: réplicas, o el barrido de un parámetro con Semillas por valor. Si en la mayoría gana lo mismo, no fue suerte.

Las dudas comunes sobre repetir están en Preguntas frecuentes. Y si te preguntás cómo se logra que la secuencia de azar del programa original salga igual en un navegador de hoy, esa historia está en Cómo está hecho el port y en Diferencias con el 2.48.32 original.