Aquí teneis un póquito de código que os será muy util para hacer la practica de TA.
Teneis una función para generar puntos aleatorios, un par de funciones para guardar y cargar puntos en ficheros... con esto os podréis centrar solo en los algoritmos que se piden en las prácticas sin preocuparse de todas estas funciones adicionales.
Descargar aquí
Espero que os sirvan de ayuda ! un saludo.
Workespeis Team.
9 comentarios:
Los valores aleatorios que generais no son uniformes al usar la funcion seno. No se para que tipo de ejercicio los vais a usar pero lo mismo esto vicia el resultado.
Exacto, pero no importa en el resultado. El problema esque la gente estaba usando random, delimitando con el resto ( % ) para sacar los valores, y esto devuelve valores enteros, y lo que se necesitaban eran numeros reales ( float ), probablemente la dispersión de los puntos no sea muy buena pero para poder probar los algoritmos funciona bastante bien. Muchas gracias por revisar el código y aclararlo.
Un saludo.
Para eso existe la funcion fmod... que te da el modulo en flotante.
O puedes usar esta funcion:
http://www.cplusplus.com/forum/beginner/7445/#msg34343
Pero generalos con el seno y el coseno, puede hacer que no pasen un test de aleatoriedad.
Con seno y coseno seguro que no pasan un test de aleatoriedad uniforme.
Por otra parte el uso del módulo tampoco da un resultado demasiado bueno:
http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
Yo simplemente dividiría el resultado del rand por RAND_MAX. Con eso simplemente tienes la misma calidad que implemente el algoritmo de rand() ... o eso o me implemento mi propio generador aleatorio, que es bastante sencillo.
Gracias por las explicaciones.
El caso es que la práctica no consistía en generar puntos aleatorios si no en buscar la pareja de puntos más cercana. Para probar las funciones se generan puntos que no tienen porque ser completamente aleatorios. El problema es que vi que mucha gente estaba usando rand tal cual y asignando a float por lo tanto todos los puntos eran enteros y se repetían muchos. El principal problema era la repetición de puntos ya que eliminar puntos repetidos es algo costoso, así que se nos ocurrió este método rápido para eliminar el problema. De esta forma aunque no fuesen totalmente aleatorios, era perfectamente válido para testear las prácticas.
Saludos.
Te doy mis felicitaciones por este blog tan bueno! sinceramente no lo conocía, lo pongo en favoritos ahora mismo.
Un saludo
Enrique
Te doy mis felicitaciones por este blog tan bueno! sinceramente no lo conocía, lo pongo en favoritos ahora mismo.
Un saludo
Enrique
Publicar un comentario