elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?  (Leído 18,406 veces)
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #10 en: 19 Marzo 2012, 23:19 pm »

Una pregunta que a ustedes les parecera tonta si duda, pero bueno, la verdad, entiendo poco (si no quieren no la conteste pero plis que nadie me banee), para que se usa #define?

Ya que no sos capaz de conseguir un libro del tema y leerlo al menos aprende a usar:
Google.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Anastacio

Desconectado Desconectado

Mensajes: 111



Ver Perfil
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #11 en: 19 Marzo 2012, 23:27 pm »

Bueno, buscare en google.

Al parecer no se permiten novatos.


En línea

You, stop to close my post, you were novice too!!!!!!!!!!!!
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #12 en: 19 Marzo 2012, 23:28 pm »

Bueno, buscare en google.

Al parecer no se permiten novatos.

En todo caso:
No se permiten vagos.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #13 en: 20 Marzo 2012, 18:59 pm »

He generado un segundo código aun lo tengo que mejorar xD, pero no se si sabéis por donde van los tiros xDD. Se que algunos lo haríais rápido xD
Fallo 1: aveces no crea nada, por qué el numero generado sigue siempre un patrón...
Fallo 2: aveces se cuela un mismo numero en un cuadrante X(...
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. using namespace std;
  5. time_t tiempo;
  6. struct tm *pt;
  7. int semilla;
  8. int lista[9][9];
  9. int numero;
  10. void Generator(){
  11.    for(int z=0,x=0,y=0,c1=0,c2=0;y<9;z++){
  12.        tiempo=time(NULL);
  13.        pt=localtime(&tiempo);
  14.        semilla=pt->tm_sec+pt->tm_yday+pt->tm_min+z;
  15.        srand(semilla);
  16.        numero=rand() % 10;
  17.        for(int i=0;i<9;i++){
  18.            if(numero!=lista[y][i]){
  19.                c1++;
  20.            }
  21.        }
  22.        if(c1==9){
  23.            for(int i=0;i<9;i++){
  24.                if(numero!=lista[i][x]){
  25.                    c2++;
  26.                }
  27.            }
  28.        }
  29.        if(c1==9 && c2==9){
  30.            lista[y][x]=numero;
  31.            x++;
  32.        }
  33.        if(x==9){
  34.            x=0;
  35.            y++;
  36.        }
  37.        c1=0;
  38.        c2=0;
  39.    }
  40. }
  41. int main(int argc,char *argv[]){
  42.    Generator();
  43.    //////////////////////////////////////
  44.    //// IMPRIMIR /////////////////////////
  45.    for(int y=0;y<9;y++){
  46.        cout << "\nLine -> ";
  47.        for(int x=0;x<9;x++){
  48.            cout << lista[y][x] << "-";
  49.        }
  50.    }
  51.    cout << endl;
  52.    cout << "GAME OVER";
  53.    return 0;
  54. };

« Última modificación: 20 Marzo 2012, 22:30 pm por Dr.Hacker++ » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #14 en: 21 Marzo 2012, 00:10 am »

No te gustaron las soluciones mia y de Sagrini que es parecida?
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #15 en: 21 Marzo 2012, 10:57 am »

no jijiji. aún así la mía esta mal. tengo que arreglarla.
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #16 en: 21 Marzo 2012, 13:33 pm »

Por eso te digo, la idea es mirar codigos de otros programadores y tratar de modificarlos para optimizarlos no para empeorarlos. Es solo un consejo, no te lo tomes a mal. Saludos
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #17 en: 21 Marzo 2012, 19:22 pm »

no ya. solo que quiero primero intentar hacer el código que busco y luego mejorarlo.
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #18 en: 21 Marzo 2012, 19:57 pm »

xDD
En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« Respuesta #19 en: 21 Marzo 2012, 20:57 pm »

¡Hola!

Tu manera de hacerlo es correcta (y eso es lo más importante). Otra manera sería mantener un vector de booleanos en el que marques los elementos que ya has cogido (así no tienes que hacer una búsqueda entre los elementos que ya han salido).

Propongo también esto otro, con listas circulares (y aprovechando que generas elementos entre 0 y 9 únicamente). Me he hecho una clase llamada clist que básicamente es eso, una lista circular. Aquí como resuelvo el problema usando esa clase:

Código
  1. #include <iostream>
  2. #include "circlist/clist.hpp"
  3.  
  4. int main() {
  5. clist<int> cl;
  6. for (int i = 0; i < 10; ++i) {
  7. cl.insert(i);
  8. cl.rand_sel();
  9. }
  10. for (int i = 0; i < 10; ++i) {
  11. cout << cl.elem() << endl;
  12. ++cl;
  13. }
  14. }

Y aquí el fichero de cabecera de la clase:

Código
  1. #ifndef NULL
  2. #define NULL 0
  3. #endif
  4.  
  5. template <class T>
  6. class clist {
  7.  
  8. private:
  9.  
  10. struct Node {
  11. T info;
  12. Node* next;
  13. Node* prev;
  14. };
  15. T hola;
  16. Node* act;
  17. int s;
  18.  
  19. public:
  20.  
  21. clist();
  22.  
  23. ~clist();
  24.  
  25. // Returns the element pointed by act
  26. T elem() const;
  27.  
  28. // Returns the number of elements of the circular list
  29. int size() const;
  30.  
  31. // Returns true if there isn't any element in the list. False otherwise
  32. bool empty() const;
  33.  
  34. // Overloaded = operator
  35. clist& operator=(const clist& cl);
  36.  
  37. // Insert element inf before the element pointed by act
  38. void insert(const T& inf);
  39.  
  40. // Erases the element pointed by act from the list
  41. void erase();
  42.  
  43. // Makes act := act->next
  44. void operator++();
  45.  
  46. // Makes act := act->prev
  47. void operator--();
  48.  
  49. // Makes act point to a random element of the list
  50. void rand_sel();
  51.  
  52. };
  53.  
  54. #include "clist.cpp"
  55.  

Si alguien quiere la implementación de las funciones (clist.cpp), ya me lo hará saber. No lo pongo aquí para no hacer el post demasiado largo.

De hecho, he utilizado este mismo método para hacer un pequeño buscaminas y decidir en que casillas estarán las minas ^^. Aunque, de todas formas, lo más eficiente en tiempo es lo del vector de booleanos.

Saludos.

PS: por cierto, un detalle. No hace falta que cambies la semilla en cada iteración. No ganas casi nada y pierdes tiempo. Es mejor hacer el srand al principio del programa y ya está.
« Última modificación: 21 Marzo 2012, 21:00 pm por Xandrete » En línea

Páginas: 1 [2] 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines