Navegación

    • Registrarse
    • Conectarse
    • Buscar
    • Portada
    • Recientes
    • Usuarios
    Prueba y compara el rendimiento de tu PC con nuestro banco de pruebas.

    Generar numeros aleatorios de verdad.

    Software
    6
    23
    5449
    Cargando más mensajes
    • Más antiguo a más nuevo
    • Más nuevo a más antiguo
    • Mayor número de Votos
    Responder
    • Responder como tema
    Accede para responder
    Este tema ha sido borrado. Solo los usuarios que tengan privilegios de administración de temas pueden verlo.
    • cobito
      cobito Administrador Última edición por

      Queria saber si existe alguna forma de generar numeros aleatorios en C sin que la maquina tenga en cuenta ninguna variable. Se que existe la siguiente forma:

      #include<stdlib.h>
      #include<time.h>
      int main (void)
      {
      srand(time(0));
      […]

      Pero esto son solo numeros pseudo-aleatorios. Existe alguna otra forma de generar numeros aleatorios autenticos en C y sin hardware externo?

      Un saludo.</time.h></stdlib.h>

      Toda la actualidad en la portada de Hardlimit
      Mis cacharros

      hlbm signature

      1 Respuesta Última respuesta Responder Citar 0
      • Hamann
        Hamann Última edición por

        Pues creo q si, pero tengo q buscar unos apuntillos y cuando eso ya te digo, creo q con un randomize y luego un random sale, pero ya te pondre el codigo cuando lo encuentre, xq ahora programacion lo tengo bastante apartado, estoy aprendiendo con Visual Basic 6.0, es mas entretenido q C 😉

        AGURA!!

        cobito 1 Respuesta Última respuesta Responder Citar 0
        • cobito
          cobito Administrador @Hamann Última edición por

          Te agradeceria mucho que cuando pudieras me pusieras un ejemplo con codigo fuente de forma sencilla y tambien explicarme a groso modo como es capaz calcular los numeros aleatorios ya que es una tarea nada sencilla y no soy capaz de imaginarmelo.

          Un saludo.

          Toda la actualidad en la portada de Hardlimit
          Mis cacharros

          hlbm signature

          packosoft 1 Respuesta Última respuesta Responder Citar 0
          • packosoft
            packosoft Admin honoris causa @cobito Última edición por

            yo hace años ya que no toco C, pero si no recuerdo mal habia que usar el randomize y el random y si la memoria no me falla, los numeros aleatorios los calculaba a partir de la hora del sistema o algo asi

            Salu2
            Packo

            cobito 1 Respuesta Última respuesta Responder Citar 0
            • cobito
              cobito Administrador @packosoft Última edición por

              Ya. El problema es que no quiero que use ninguna variable del sistema. La forma que he puesto en el primer post consiste en lo que comentas: tener en cuenta la hora. Lo que pasa es que si se tienen en cuenta variables de sistema el numero aleatorio puede llegar a ser predecible por lo que pierde su propiedad mas importante. Lo que yo quiero conseguir es un numero aleatorio que no tenga en cuenta ninguna variable de sistema, es decir, que sea impredecible.

              He estado buscando por internet y he encontrado formas para hayar lo que busco, pero que son demasiado complicadas ya que entran en juego materiales radiactivos de baja actividad, detectores de actividad y circuitos que se conectan al puerto serie para mandar la informacion ya que ciertos elementos radiactivos emiten una particula de forma aleatoria, es decir, que no existe formula matematica capaz de predecir cuando se va a expulsar dicha particula. Todo esto hay que hacerlo porque no existe ninguna formula matematica que sea capaz de producir un numero aleatorio sin tener en cuenta alguna variable.

              Lo que yo queria saber es si existe la forma de no usar hardware externo para generar estos numeros que busco… ya me da igual el lenguaje de programacion que sea... lo que no quiero es tener que fabricar dispositivos como los que he mencionado anteriormente.

              Toda la actualidad en la portada de Hardlimit
              Mis cacharros

              hlbm signature

              packosoft 1 Respuesta Última respuesta Responder Citar 0
              • packosoft
                packosoft Admin honoris causa @cobito Última edición por

                por lo que yo recuerdo del random, no habia que pasarle ninguna variable, el solo la cogia. Respecto a lo que quieres hacer, yo no estoy muy seguro que se pueda hacer, fijate que cualquier numero aleatorio no es un numero aleatorio al 100%, en algo se tiene que basar el software para generarlo, no?

                Salu2
                Packo

                cobito 1 Respuesta Última respuesta Responder Citar 0
                • cobito
                  cobito Administrador @packosoft Última edición por

                  Pues llevo algun tiempo pensando en este tema porque me interesaria mucho conseguir un numero aleatorio al 100% por software, pero pensando y pensando he llegado a la conclusion de que eso es imposible. De todas formas si hay por ahi algun genio suelto y ha encontrado la solucion a esto que nos deleite con su metodo.

                  Gracias a todos por las respuestas.

                  Toda la actualidad en la portada de Hardlimit
                  Mis cacharros

                  hlbm signature

                  josefu 1 Respuesta Última respuesta Responder Citar 0
                  • josefu
                    josefu @cobito Última edición por

                    En los unix tienes el dispositivo /dev/random que sirve para obtener números aleatorios. Su funcionamiento se basa en obtener el número aleatorio a partir del "ruido" del sistema, es decir, las comunicaciones internas del pc, tarjetas de red, vga, dispositivos pci, etc. Así, es prácticamente imposible que las condiciones en las que se obtuvo un número aleatorio a través de este dispositivo se vuelvan a repetir. No es 100% aleatorio, pero como han dicho por ahí, en una máquina programable es imposible obtener un número aleatorio como tal.

                    vallekano 1 Respuesta Última respuesta Responder Citar 0
                    • vallekano
                      vallekano @josefu Última edición por

                      Si no recuerdo mal:

                      Si usas "random" así de priumeras si que usa la hora del sistema o algo parecido.

                      Pero si pones al principio del programa un "randomize" entonces se crea una especie de variable (pool), en la que va "volcando" todos los datos que pasan por el programa (variables, constantes, E/S, etc…), y cuando llamas a "random" usa esa variable para calcular el numero aleatorio.

                      De esta manera es un numero aleatorio bastante "puro".

                      maxfer 1 Respuesta Última respuesta Responder Citar 0
                      • maxfer
                        maxfer @vallekano Última edición por

                        Cobito, de momento nadie a sido capaz de conseguir numeros realmente aleatorios, de momento es imposible. Según tengo entendido si se consiguiesen numeros 100% aleatorios la informatica daria el paso mas grande de su historia….
                        Así que tendras que conformarte con los pseudo-aleatorios que se consiguen actualmente. Si consigues nº 100% aleatorios conseguirias el nobel de algo (hiriamos a medias, no? :vayatela: )

                        dew!!

                        cobito 1 Respuesta Última respuesta Responder Citar 0
                        • cobito
                          cobito Administrador @maxfer Última edición por

                          Una pregunta: Eso de captar el ruido en Unix me parece realmente interesante, pero se puede hacer en C?
                          Por otra parte me gustaria que alguien me pusiera codigo fuente de ejemplo sobre como crear numeros aleatorios con randomize ya que he buscado en google y no encuentro nada al respecto.

                          Gracias.

                          PD: Lo del premio nobel lo dejare para otro momento porque me da vergüenza salir en publico :rolleyes:

                          Toda la actualidad en la portada de Hardlimit
                          Mis cacharros

                          hlbm signature

                          vallekano 1 Respuesta Última respuesta Responder Citar 0
                          • vallekano
                            vallekano @cobito Última edición por

                            Si esque no tiene nada el codigo:

                            Tu pones:

                            randomize();
                            

                            Y luego cada vez que quieras un numero haces

                            mi_numero = random(1);
                            

                            Lo que te da un numero aleatorio entre 0 y 1. Que luego multiplicando por lo que sea obtienes un numero entre los intervalos que necesites.

                            cobito 1 Respuesta Última respuesta Responder Citar 0
                            • cobito
                              cobito Administrador @vallekano Última edición por

                              Pero que biblioteca tengo que incluir?

                              Toda la actualidad en la portada de Hardlimit
                              Mis cacharros

                              hlbm signature

                              vallekano 1 Respuesta Última respuesta Responder Citar 0
                              • vallekano
                                vallekano @cobito Última edición por

                                pues eso ahora mismo n olo se peeor el tito google seguro que si

                                cobito 1 Respuesta Última respuesta Responder Citar 0
                                • cobito
                                  cobito Administrador @vallekano Última edición por

                                  He estado buscando en el google y no he encontrado informacion concluyente, es decir, he visto ejemplos mal hechos porque con dos compliladores (visual c++ y devpp) me dicen que randomize no esta declarada a pesar de haber incluido las librerias oportunas (segun dicho ejemplo). Alguien sabe en que libreria se encuentra esta funcion?

                                  Toda la actualidad en la portada de Hardlimit
                                  Mis cacharros

                                  hlbm signature

                                  Hamann 1 Respuesta Última respuesta Responder Citar 0
                                  • Hamann
                                    Hamann @cobito Última edición por

                                    Prueba aver asi:

                                    randomize()
                                    rand()%101
                                    #esto te genera valores aleatorios entre 0 y 100

                                    randomize()
                                    1+rand()%101
                                    #y esto de 1 a 100

                                    prueba aver si te funciona, la sentencia creo q era asi

                                    AGURA!!

                                    Hamann 1 Respuesta Última respuesta Responder Citar 0
                                    • Hamann
                                      Hamann @Hamann Última edición por

                                      Cobito, al final funcionaba como te comente?? o como lo as echo??

                                      AGURA!!

                                      cobito 1 Respuesta Última respuesta Responder Citar 0
                                      • cobito
                                        cobito Administrador @Hamann Última edición por

                                        He probado:

                                        randomize()
                                        rand()%101
                                        #esto te genera valores aleatorios entre 0 y 100

                                        y funciona perfectamente.

                                        Gracias por la ayuda.

                                        Toda la actualidad en la portada de Hardlimit
                                        Mis cacharros

                                        hlbm signature

                                        cobito 1 Respuesta Última respuesta Responder Citar 0
                                        • cobito
                                          cobito Administrador @cobito Última edición por

                                          Que diferencia hay entre random() y rand() ademas de la sintaxis? Cual es mejor?

                                          Toda la actualidad en la portada de Hardlimit
                                          Mis cacharros

                                          hlbm signature

                                          Hamann 1 Respuesta Última respuesta Responder Citar 0
                                          • Hamann
                                            Hamann @cobito Última edición por

                                            el rand es lo q hace los numeros aleatorios, pero sin el randomize(q seria aleatorizar el rand), pos esos numeros se acabarian repitiendose, creo q se repiten cuando ejecutas el proyecto por segunda vez, la 1º puede q parezca q no se repiten pero apartir de hay los numeros seran los mismo. Por eso utilizamos el randomize para evitar eso. 😄 De nada hombre!! Me alegro de q te sirviera de ayuda 😉

                                            AGURA!!!

                                            vallekano 1 Respuesta Última respuesta Responder Citar 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              Last post
                                            542413
                                            62592
                                            34149
                                            Quién está conectado
                                            cobito Sylver
                                            Quién nos ha visitado hoy
                                            defaultuser Sylver jordiqui xerox Janylusifer cobito puneescortsx krampak Fassou timpaine2 Clipper Yorus Hin Mystique Magog