mercredi 22 novembre 2017

Gerar numeros aleatorios de 0 a 999999 C

Portugese:

Criei um código em C que preenche um vetor de tamanho de 999999, então eu preciso de um gerador de números aleatórios que sorteia números de 0 a 999999 e preencha esse vetor com números não repetidos. Estou usando a função RAND, mas ele aparenta ter um limite, que e 32767. Ja tentei usar srand (time(NULL)) para ver se o limite mudava, mas sem existo. Alguem sabe uma alternativa? Segue a baixo a parte do codigo.

English (courtesy Google):

I created a code in C that fills a vector of size 999999, so I need a random number generator that draws numbers from 0 to 999999 and fills that vector with numbers not repeated. I'm using the RAND function, but it appears to have a limit, which is 32767. I've tried using srand (time (NULL)) to see if the limit changes, but I do not exist. Does anyone know an alternative? Follow the part of the code below.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <string.h>
#define TAM 999999
srand (time(NULL));
int Cont=0,
        Cont2;
    //Verifica quantidade de arquivos que devem ser criados.
    //Cria arquivos TXT com base nos dados de entrada.   itoa
    while(Cont<TAM){
        List->vetor[Cont]=(int)rand() % TAM; //RAMDOM(VOID); CPLUSPLUS
        //Checagem de numeros repetidos
        Cont2=0;
        while(Cont2<Cont){
            if(List->vetor[Cont]==List->vetor[Cont2]){
                //Printf exibe o numero que foi repetido, e as posição deles.
                printf("%d = %d || Casa1:%d, Casa2:%d \n",List->vetor[Cont],List->vetor[Cont2],Cont,Cont2);
                //Finaliza a checagem de numeros repetidos.
                Cont2=Cont;
                //Decrementa o Valor, fazendo ficar preso na mesmo casa e dando outro numero.
                Cont--;
            }
            Cont2++;
        }
        Cont++;
    }




Aucun commentaire:

Enregistrer un commentaire