Autor
|
Tema: [C++][Opiniones] Qué os parece esta forma de generar números aleatorios? (Leído 18,456 veces)
|
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.? #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; };
|
|
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
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
|
puede ser xDD es que soy de los que nunca usa switch ni do while xDD
|
|
|
En línea
|
|
|
|
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 ]); }
|
|
|
En línea
|
|
|
|
anonimo12121
|
sagrini en tu code se me repiten números corrigelo xD
|
|
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
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.
|
|
|
En línea
|
|
|
|
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 ]); }
|
|
|
En línea
|
|
|
|
Anastacio
Desconectado
Mensajes: 111
|
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
|
|
|
En línea
|
You, stop to close my post, you were novice too!!!!!!!!!!!!
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Pero tu codigo Anastacio puede repetirse los numeros y la idea es que no
|
|
|
En línea
|
|
|
|
Anastacio
Desconectado
Mensajes: 111
|
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!!!!!!!!!!!!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Pregunta] Como generar números aleatorios no repetidos
Programación Visual Basic
|
Dreamaker
|
6
|
6,824
|
20 Julio 2010, 02:24 am
por Fitoschido
|
|
|
Generar numeros aleatorios sin repeticion[C]
Programación C/C++
|
HRSLASH
|
2
|
25,335
|
28 Diciembre 2010, 06:58 am
por von Newman
|
|
|
Generar números aleatorios sin que se repitan ... en C++
Programación C/C++
|
drawiz
|
4
|
27,988
|
17 Octubre 2019, 07:46 am
por Mecanma
|
|
|
Programa para generar numeros aleatorios
Programación C/C++
|
pedrokuellar
|
8
|
8,254
|
24 Octubre 2011, 22:37 pm
por s00rk
|
|
|
Una nueva forma de generar números aleatorios aumentaría la seguridad del ...
Noticias
|
wolfbcn
|
0
|
1,215
|
19 Mayo 2016, 21:31 pm
por wolfbcn
|
|