Função rand () em linguagem C

Rand Function C Language



Na linguagem C, o fileira() função é usada para Pseudo Gerador de Números (PRNG) . Os números aleatórios gerados pela função rand () não são verdadeiramente aleatórios. É uma sequência que se repete periodicamente, mas o período é tão grande que podemos ignorá-lo. o fileira() função funciona lembrando um valor de semente que é usado para calcular o próximo número aleatório e a próxima nova semente. Neste artigo, vamos discutir em detalhes como os números aleatórios podem ser gerados usando o fileira() função. Então vamos começar!

Arquivo de cabeçalho:

stdlib.h







Sintaxe:

int rand (vazio)



Valores de retorno:

Esta função retorna o próximo número pseudoaleatório da série. O valor do intervalo da série numérica está entre 0 e RAND_MAX. RAND_MAX é uma macro definida em stdlib.h arquivo de cabeçalho, cujo valor é o valor máximo, que pode retornar pela função rand (). O valor de RAND_MAX é maior, mas não menor que 32767, dependendo das bibliotecas C.



//Example1.c

#incluir
#incluir

inta Principal()
{

inteu;

printf ('10 Números Aleatórios => n');

para(eu=0;eu<10;eu++)
{
printf ('% d', fileira ());
}

printf (' n');
Retorna 0;
}


Em Example1.c, chamamos a função rand () em cada iteração do loop for e imprimimos o valor de retorno da função. A sequência de valores da função rand () é a mesma cada vez que executamos o programa. Por padrão, a semente da função rand é definida como 1.





Podemos definir a semente para a função rand usando o srand () função. A semente pode ser definida apenas uma vez e antes da primeira vez fileira() chamada de função.

função srand ():

Arquivo de cabeçalho:

stdlib.h



Sintaxe:

int srand (semente int sem sinal)

Argumentos:

Esta função leva 1 argumento

semente: Um valor inteiro usado como semente para uma nova série de números pseudo-aleatórios.

Valores de retorno:

Nenhum

//Example2.c

#incluir
#incluir
#incluir

inta Principal()
{

inteu;

srand ( Tempo (0));

printf ('10 Números Aleatórios => n');

para(eu=0;eu<10;eu++)
{
printf ('% d', fileira ());
}

printf (' n');
Retorna 0;
}


Em Example2.c, usamos a função srand () para definir a semente inicial da sequência de números aleatórios gerada pela função rand (). Cada vez que o programa é executado, uma sequência diferente é gerada. Em srand (), função time (0) (declarada em time.h arquivo de cabeçalho) é usado como uma semente. Esta função time (0) retorna o número de segundos decorridos desde a época (00:00:00, 1º de janeiro de 1970). Isso ainda pode produzir as mesmas sequências se você executar o programa no mesmo segundo.

//Example3.c

#incluir
#incluir
#incluir

inta Principal()
{

inteu;

srand ( Tempo (0));

printf ('10 Números Aleatórios entre 1 e 10 => n');

para(eu=0;eu<10;eu++)
{
printf ('% d',( fileira () %10) + 1);
}

printf (' n');
Retorna 0;
}


Em Example3.c, vimos como os números aleatórios podem ser gerados entre 1 e 10.

//Example4.c

#incluir
#incluir
#incluir

inta Principal()
{

inteu,max,min;

printf ('Insira o valor mínimo =>');
scanf ('% d', &min);
printf ('Insira o valor máximo =>');
scanf ('% d', &max);

E se(min>max)
{
printf ('O valor mínimo é maior que o valor máximo n');
Retorna 0;
}

srand ( Tempo (0));


printf ('10 Números Aleatórios entre% d e% d => n',min,max);

para(eu=0;eu<10;eu++)
{
printf ('% d',( fileira () % (max-min+1)) +min);
}

printf (' n');
Retorna 0;
}


Em Example4.c, pegamos o intervalo do usuário e geramos um número aleatório dentro desse intervalo. A fórmula é: rand ()% (max - min +1)) + min

//Example5.c

#incluir
#incluir
#incluir

inta Principal()
{

inteu;

srand ( Tempo (0));

printf ('10 Números Aleatórios entre 0,0 e 1,0 => n');

para(eu=0;eu<10;eu++)
{
printf ('% f',((flutuador) fileira () /RAND_MAX));
}

printf (' n');
Retorna 0;
}


Em Example5.c, vimos como podemos gerar números aleatórios entre float 0.0 e 1.0. A fórmula é: (flutuante) rand () / RAND_MAX)

//Example6.c

#incluir
#incluir
#incluir

inta Principal()
{

inteu;
flutuadormax,min;

printf ('Insira o valor mínimo =>');
scanf ('% f', &min);
printf ('Insira o valor máximo =>');
scanf ('% f', &max);

E se(min>max)
{
printf ('O valor mínimo é maior que o valor máximo n');
Retorna 0;
}

srand ( Tempo (0));

printf ('10 Números Aleatórios entre% f e% f => n',min,max);

para(eu=0;eu<10;eu++)
{
printf ('% f',min+ ((flutuador) fileira () /(RAND_MAX/(max-min))));
}

printf (' n');
Retorna 0;
}


Em Example6.c, pegamos o intervalo do usuário e geramos um número aleatório dentro desse intervalo (ambos inclusivos). A fórmula é: min + ((float) rand () / (RAND_MAX / (max - min)))

Conclusão:

Neste artigo, aprendemos como os números aleatórios podem ser gerados usando o fileira() e srand () função. Não há garantias sobre a qualidade dos números aleatórios gerados pela função rand, mas é bom o suficiente para uso casual.