Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: meaf75 en 13 Agosto 2016, 20:02 pm



Título: ¿Generar numeros al 100% al azar?
Publicado por: meaf75 en 13 Agosto 2016, 20:02 pm
¿Como puedo hacer para que se generen numeros al azar una y otra vez?, he estado intentandolo pero siempre se terminan repitiendo los numeros y la posicion, he aqui el codigo:
Código:
#include <conio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;

int main(){

int L1,L2,L,num1,masal,num2,num,numM=1,a,pos;
char op;

do{
    system("cls");
    L1=50+rand()%150; L2=50+rand()%150;
    L=L1+L2;

    cout<<"Limite escogido: "<<L<<"\n";


    for(a=1;a<=L;a++){
    masal=rand()%10+1; num1=rand()%350+masal; num2=rand()%350+masal;
    num=num1+num2;
    cout<<a<<". "<<num<<"\n";

    if(num>numM){
        numM=num;
        pos=a;
    }
 }

 cout<<"El numero mayor esta en la posicion "<<pos<<" y es el: "<<numM<<"\n";

 cout<<"\n¿Desea repetir el ejercicio?\nSi (s)\nNo (Pulsar cualquier otra tecla)\n";
 cin>>op;

  }while(op=='s');

   return 0;
}


Título: Re: ¿Generar numeros al 100% al azar?
Publicado por: engel lex en 13 Agosto 2016, 20:10 pm
primero... en pc no hay tal cosa como numeros 100% al azar... es un problema que lleva años dicutiendose... lo que buscas es que se generen numeros pseudo-aleatorios diferentes para cada caso...

el problema es que rand siempre va a comenzar en el mismo punto... y como esto no es más que una aplicación simple y no requiere más profundidad ni analisis, puedes usar srand() que te permite inicializar los numeros de rand desde un punto basado en el tiempo del PC

aqui un ejemplo y su uso

http://www.cplusplus.com/reference/cstdlib/srand/ (http://www.cplusplus.com/reference/cstdlib/srand/)

Código
  1. /* srand example */
  2. #include <stdio.h>      /* printf, NULL */
  3. #include <stdlib.h>     /* srand, rand */
  4. #include <time.h>       /* time */
  5.  
  6. int main ()
  7. {
  8.  printf ("Primero Numero: %d\n", rand()%100);
  9.  srand (time(NULL));
  10.  printf ("Numero pseudo-aleatorio: %d\n", rand()%100);
  11.  srand (1);
  12.  printf ("Nuevamente el primer numero: %d\n", rand()%100);
  13.  
  14.  return 0;
  15. }


Título: Re: ¿Generar numeros al 100% al azar?
Publicado por: MessageBoxA en 13 Agosto 2016, 23:06 pm
tienes que llamar a la funcion srand()

Código
  1. int hora = time(NULL);
  2.     // semilla de rand();  
  3. srand(hora);  //almacenamos el valor del reloj del sistema esto con la intencion de poder
  4.                   //generar numeros aleatorios
  5. int n=0;  
  6. int m=0;
  7. n = rand()%100; //multiplo
  8. m = rand()%100;

antes  del for
coloca
Código
  1. numM=1;