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

Iniciado por anonimo12121, 18 Marzo 2012, 17:28 PM

0 Miembros y 2 Visitantes están viendo este tema.

anonimo12121

[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 (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
time_t tiempo;
struct tm *pt;
int semilla;
int numeros[10];
int numero;
int main(int argc,char *argv[]){
   tiempo=time(NULL);
   pt=localtime(&tiempo);
   for(int c=0,fin=0,i=0;fin<9;i++){
       ////////////////////////////////////////////////////////////////////
       semilla= pt->tm_sec+pt->tm_min+pt->tm_hour+pt->tm_mday+pt->tm_yday+i;
       srand(semilla);
       numero=rand() % 10;
       ////////////////////////////////////////////////////////////////////
       for(int x=0;x<9;x++)if(numero!=numeros[x])c++;
       if(c==9){
           numeros[fin]=numero;
           fin++;
       }
       c=0;
   }
   for(int i=0;i<9;i++)cout << numeros[i] << "-";
   return 0;
};
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$

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.

anonimo12121

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

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)

#include <stdio.h>
#define TAM 10
#define RAND 20

int main ()
{ srand (time (0)); int nums [TAM], a, b, flag, cont;
for (a=0; a<TAM; a++)
{ do
{ nums [a]=rand ()%RAND+1; flag=0; cont=0;
for (b=0; b<cont; b++) { if (nums [b]==nums [a]) flag=1; cont++;}
} while (flag == 1);
}
for (a=0; a<TAM; a++) printf ("%d ", nums [a]);
printf ("\n");return 0;
}

anonimo12121

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$


int num;
int lista de 9;

for (int i = 0; i<9; i++) {

do { num = Random } while Existe(num);
lista[i] = num;

}




bool Existe(int num)
{

for (int i = 0; i<9; i++)
if (lista[i] == num) return true;

}


Algo asi y se entiende mejor.

Sagrini

Sí, tiene un error muuy gordo de diseño ;)
Os dejo el corregido. Le he añadido un break; y le he quitado cont;

#include <stdio.h>
#define TAM 10
#define RAND 20

int main ()
{ srand (time (0)); int nums [TAM], a, b, flag;
for (a=0; a<TAM; a++)
{ do
{ nums [a]=rand ()%RAND+1; flag=0;
for (b=0; b<a; b++) if (nums [b]==nums [a]) { flag=1; break; }
} while (flag == 1);
}
for (a=0; a<TAM; a++) printf ("%d ", nums [a]);
printf ("\n");return 0;
}

Anastacio

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.


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

$Edu$

Pero tu codigo Anastacio puede repetirse los numeros y la idea es que no

Anastacio

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?

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