Simple WorldPouco durou a ledicia. Esta primeira versión de Simple World é un pouco de portas para dentro. Necesitaba libera-lo código por aquilo de release soon, release often e xa había varios meses dende que anunciara a especificación de Simple World 1.0. Debido a que esta versión ten unha funcionalidade reducida e nada espectacular, decidín non publicita-la (freshmeat.net, sourceforge.net, etc). Só o anunciei aquí e na páxina do proxecto. Así que, as modestas 18 descargas dos dous primeiros días viñeron por sorpresa. Pero, como dicía, pouco durou a ledicia.

O mesmo día que publiquei Simple World 1.0a1 xa vin que brainless actuaba dun xeito raro: podía moverse unha única vez e despois só xiraba ó seu redor. Onte, ó día seguinte, descubrín de onde viña o problema: a implementación dun xenerador de números pseudo aleatorios era de risa. Despois de calcular un par de números aleatorios chegaba a un punto onde sempre devolvía o mesmo valor.

O algoritmo que escollera, linear congruential generator (LCG), non é ningunha marabilla. Se se usa para calcular valores nun espazo en dúas dimensións acaba devolvendo valores que se poden agrupar en distintas rectas separadas por unha distanza constante as unhas das outras. Ó final acabei mirando como se implementa o algoritmo LCG a bliblioteca C de GNU (glibc). Esta debería ser a implementación que debería estar en Simple World 1.0a1, pero sempre andamos con presas e claro…

Ó final, tomeimo a mal, e para Simple World 1.0a2 implementarei un xerador de números pseudo aleatorios máis “aleatorio”. Quedoume un resultado moi semellante ó usado pola implementación da glibc da función rand().

rand() en SW 1.0a1
Dispersión do xerador de números aleatorios en Simple World 1.0a1 (só hai 3 puntos distintos)
Como deber�a ser rand() en SW 1.0a1
Así debería funcionar (puntos colocados en varias liñas rectas)
rand() en SW 1.0a2
Dispersión do xerador de números aleatorios de Simple World 1.0a2

rand() en glibc
Dispersión da implementación de rand() da glibc


2 Responses to “Primeiro bug en Simple World 1.0a1”

  1. 1 cuco
  2. 2 Xosé Otero

    Interesante e enigmático comentario… merecíase unha resposta interesante e pitónica, pero… non se atopa “chintófeno” por internet, só “chintófano”.

    Se me aclaras o teu comentario, mellor que mellor 🙂


Categories

Calendario

Novembro 2007
M T W T F S S
« Ago   Dec »
 1234
567891011
12131415161718
19202122232425
2627282930  
3K2 theme by Hakan Aydin