Curso de Programação C | Como gerar números aleatórios com as funções rand e srand? | aula 103

preview_player
Показать описание
Seja muito bem vindo à aula de número 103 do nosso curso gratuito de programação com a linguagem C.

Ficar digitando números pelo teclado para testar nossos programas pode ser bem trabalhoso, especialmente com vetores maiores.

Uma função muito útil é a função rand() que vamos conhecer nesta aula.

Esta função serve para gerar valores aleatórios. Assim, ao fazermos uma repetição para preencher um vetor lendo valores do teclado, podemos apenas gerar valores para preencher nosso vetor, assim:

for(i = 0; i menor que tam; i++)
vet[i] = rand();

Contudo, ao executar o programa algumas vezes, você irá perceber que são gerados sempre os mesmos valores. Por que isso ocorre?

A verdade é que não é possível gerar números completamente aleatórios, gerar números "do nada". Precisamos partir de algo, de algum valor inicial.

Quem escreveu essa função definiu algum valor inicial que é utilizado para a geração dos números. São gerados sempre os mesmos valores porque é utilizado sempre esse valor padrão chamado de semente ou "seed" em inglês.

Para que seja gerada uma sequência diferente em cada execução, precisamos informar nossa semente, um valor que seja diferente em cada execução do nosso programa.

Um valor muito útil como semente é a hora do computador que será diferente em cada execução do programa, mesmo que em milésimos de segundos.

Para utilizar a hora do computador como semente, basta utilizar a função srand() uma única vez, como a seguir:

#include time.h

srand(time(null));

A função srand() altera a semente padrão pela nova semente recebida como parâmetro entre o par de parênteses.

Para obter a hora atual do computador, precisamos da biblioteca time.h. É esta biblioteca que possui a função que irá nos retornar a hora do computador: time(null).

Рекомендации по теме
Комментарии
Автор

Esse é o melhor canal que já encontrei no Youtube. Professor Vagner, valeu por compartilhar seus conhecimentos, mestre!
Estou no último período do Cst Em Análise e Des. de Sistemas. E hj, tenho uma prova de algoritmo e log. de programação em c. Já aprendi muito aqui com vc!
Estou mui confiante de que vou me sair bem na prova!

raimundobrandao
Автор

As aulas são ótimas! Parabéns pela didática e abordagem do conteúdo. Obrigado!

helanoandrade
Автор

Valeewww professor. Ótima aula . Eu estava tentando fazer isto de gerar números aleatórios por conta própria. Sua dica me ajudou muito, principalmente na parte que vc fala pseudoaleatorios. Eu imaginava que como é possível uma máquina gerar um número realmente aleatório? Sem ter uma lógica por trás disto rsrrs o senhor manja msm de algoritmos, parabéns.

Rafael-JC
Автор

Aula muito legal, nunca tinha visto esses conceitos.

GeisonGabrieldeoliveira
Автор

que legal, não sabia dessa ideia da semente! Tô curtindo muito essa playlist, muito boa. Parabéns!

jonasjunior
Автор

Meus parabéns professor. Excelente aulas. Está me ajudando muuuuito. Estou acompanhando todas as suas aulas. Show!

orlandogomes
Автор

Ótima aula professor... assisto sempre direto no seu site, venho de lá só pra poder deixar o meu like e comentário, pois sei que isso o ajuda bastante... Além disso sempre deixo rodar todas as propragandas até o fim, e também visito-as, pois sei também que fazendo além lhe ajudo mais ainda...
Já que estás me ajudando muitoooo...
Obrigado...

israels.santos
Автор

ótimo vídeo rápido e direto ao ponto sem enrolação .

viniciustenorio
Автор

Está me ajudando bastante as suas aulas, na faculdade estava totalmente perdida. Ótimo trabalho!!

ilea-usgs
Автор

A hora do computador seria armazenada numa variável do tipo double? Só curiosidade mesmo.

davii_vinicius
Автор

Tem como pedir ao usuario para escolher a semente? como se o valor que o usuario digitasse, fosse a semente

weromgordiano
Автор

Prof Gaspar? Sua aula é show! Parabéns. Qual esse programa que vc tá usando, é gratis?

marciosantos
Автор

oi professor bom dia, como eu faria para distribuir de forma aleatória, 30 números para 5 posições diferentes?
desde já agradeço.

alenilsonjesussantos
Автор

Qualquer número tem que ser colocado pra gerar numeros aleatórios?

STXX
Автор

caramba, os meus valores sairam iguais aos seus kkk

ishidamatheus
Автор

No meu vetor, foi armazenado os mesmos valores da vídeo aula, será se esse negocio é aleatório mesmo? ashashhahashsahsaas

eddcalistenia
Автор

Alguém pode me orientar sobre a documentação da linguagem C? Não consigo encontrar

L.u.c.a.z
Автор

Professor, muito bom!

Gostaria de saber como inserir um número "x", em posições aleatórias de um vetor/matriz.

Ex. Matriz 10x10. Gostaria que 40% da matriz estivesse com o número 2 em posições aleatórias e o restante com um número 1.

Muito obrigado!!

lieelbdias
Автор

Isso não funciona quando você está trabalhando com um programa que processa em alta velocidade

lucasschiefferdecker