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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  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,409 veces)
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
[C++][Opiniones] Qué os parece esta forma de generar números aleatorios?
« en: 18 Marzo 2012, 17:28 pm »

[C++][Opiniones] Qué os parece esta forma de generar números aleatorios?

Bueno lo que he querido hacer es generar 9 números aleatorios y que ninguna coincida que os parece.?
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 numeros[10];
  9. int numero;
  10. int main(int argc,char *argv[]){
  11.    tiempo=time(NULL);
  12.    pt=localtime(&tiempo);
  13.    for(int c=0,fin=0,i=0;fin<9;i++){
  14.        ////////////////////////////////////////////////////////////////////
  15.        semilla= pt->tm_sec+pt->tm_min+pt->tm_hour+pt->tm_mday+pt->tm_yday+i;
  16.        srand(semilla);
  17.        numero=rand() % 10;
  18.        ////////////////////////////////////////////////////////////////////
  19.        for(int x=0;x<9;x++)if(numero!=numeros[x])c++;
  20.        if(c==9){
  21.            numeros[fin]=numero;
  22.            fin++;
  23.        }
  24.        c=0;
  25.    }
  26.    for(int i=0;i<9;i++)cout << numeros[i] << "-";
  27.    return 0;
  28. };
  29.  


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 #1 en: 18 Marzo 2012, 17:47 pm »

Mmm no conozco C++ pero creo que te mataste mucho, ya que lo que se hace es meter los numeros en un array entonces con un Do-While vas generando numeros randoms "mientras" ese numero generado no se encuentre en la lista. Y te queda mas facil de leer y mas corto.


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 #2 en: 18 Marzo 2012, 17:56 pm »

puede ser xDD es que soy de los que nunca usa switch ni do while xDD
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
Sagrini

Desconectado Desconectado

Mensajes: 107


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

Mmm... no me gusta. Las primeras líneas son innecesarias, no hay que darle tantas vueltas, con un srand (time (0)) basta.
Te dejo mi código en C (tal vez un poco más enrevesado jaja)
Código
  1. #include <stdio.h>
  2. #define TAM 10
  3. #define RAND 20
  4.  
  5. int main ()
  6. { srand (time (0)); int nums [TAM], a, b, flag, cont;
  7. for (a=0; a<TAM; a++)
  8. { do
  9. { nums [a]=rand ()%RAND+1; flag=0; cont=0;
  10. for (b=0; b<cont; b++) { if (nums [b]==nums [a]) flag=1; cont++;}
  11. } while (flag == 1);
  12. }
  13. for (a=0; a<TAM; a++) printf ("%d ", nums [a]);
  14. printf ("\n");return 0;
  15. }
  16.  
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 #4 en: 18 Marzo 2012, 18:50 pm »

sagrini en tu code se me repiten números corrigelo xD
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 #5 en: 18 Marzo 2012, 19:39 pm »

Código
  1. int num;
  2. int lista de 9;
  3.  
  4. for (int i = 0; i<9; i++) {
  5.  
  6. do { num = Random } while Existe(num);
  7. lista[i] = num;
  8.  
  9. }
  10.  
  11.  
  12.  
  13.  
  14. bool Existe(int num)
  15. {
  16.  
  17. for (int i = 0; i<9; i++)
  18. if (lista[i] == num) return true;
  19.  
  20. }
  21.  

Algo asi y se entiende mejor.
En línea

Sagrini

Desconectado Desconectado

Mensajes: 107


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

Sí, tiene un error muuy gordo de diseño ;)
Os dejo el corregido. Le he añadido un break; y le he quitado cont;
Código
  1. #include <stdio.h>
  2. #define TAM 10
  3. #define RAND 20
  4.  
  5. int main ()
  6. { srand (time (0)); int nums [TAM], a, b, flag;
  7. for (a=0; a<TAM; a++)
  8. { do
  9. { nums [a]=rand ()%RAND+1; flag=0;
  10. for (b=0; b<a; b++) if (nums [b]==nums [a]) { flag=1; break; }
  11. } while (flag == 1);
  12. }
  13. for (a=0; a<TAM; a++) printf ("%d ", nums [a]);
  14. printf ("\n");return 0;
  15. }
  16.  
En línea

Anastacio

Desconectado Desconectado

Mensajes: 111



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

Un par de preguntas.

Soy un novato, pero opino (y mi opinion vale casi nada, ya que he empezado hace bastante poco,), que esos codigos son muy complicados.

Código:
#include <stdio.h>
int main()
{

int a, b;
a = 0;
b = 0;

do{
srand( (unsigned)time( NULL ) );
a = rand();
printf("%d",&a);
b = b++;
while(b <= 9);
getchar();
return 0;
}




me dan su opinion?
Por alguna razon, este codigo no me lo compila
En línea

You, stop to close my post, you were novice too!!!!!!!!!!!!
$Edu$


Desconectado Desconectado

Mensajes: 1.842



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

Pero tu codigo Anastacio puede repetirse los numeros y la idea es que no
En línea

Anastacio

Desconectado Desconectado

Mensajes: 111



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

Aaaa, claro, porque en algun momento puede ser la misma hora de ayer (a eso te refieres), pero como, entonces, podria usarse getpid, o no?

Tambien podria guardar todos los numeros que se producen, y revisar si son iguales, si no, que lo modifique de algun modo (+1).

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?

En línea

You, stop to close my post, you were novice too!!!!!!!!!!!!
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