Pesquisar na Comunidade
Mostrando resultados para as tags ''srand''.
Encontrado 3 registros
-
Oi pessoal, boa tarde. Fiz um código para o problema abaixo, mas parece que minha lógica está com algum furo. Já revisei, e não entendo o porque ainda tenho números repetidos. Alguém consegue me dar uma força? Obrigado!! A lógica que eu pensei do código é a seguinte: Eu preencho um campo da matriz, com "i" e "j" e comparo com os anteriores, com "k" e "z". Caso este campo que acabei de preencher seja igual a um campo anterior, eu volto uma posição e começo o FOR novamente. Para isso, eu utilizei 4 variáveis i,j,k,z & um "aux" que serve como minha condicional para parada. Importante: Eu fiz o código com uma matriz 4x4 para testá-lo. Depois vou replicar para uma matriz 99x99. Segue o problema: Faça um programa para gerar automaticamente números entre 0 e 99 de uma cartela de bingo. Sabendo que cada cartela deverá conter 5 linhas e 5 números, gere estes dados de modo a não ter números repetidos dentro da cartela. Segue o Código: #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int M[4][4], i,j,k,z, aux = 0; srand(time(NULL)); for(i=0;i<4;i++){ for(j=0;j<4;j++){ aux = 0; M[i][j] = 1+ rand() % 16; for(k = i; k >= 0; k--){ if(aux == 1){ j = j - 1; break; } for(z = j; z >= 0; z--){ if((M[k][z] == M[i][j] && k != i && z != j)){ aux = 1; break; } } } } } printf("\n\n\n\n"); for(i=0;i<4;i++){ for(j=0;j<4;j++){ printf("%d\t", M[i][j]); } printf("\n"); } return 0; }
-
Um ato útil e muitas vêzes necessário é poder gerar números aleatórios, em linguagem C e isto é perfeitamente possível. Quando queremos uma cadeia de números assim, usamos a função rand(); da biblioteca stdlib.h. Um valor aleatório entre 0 e a constante RAND_MAX, é apresentado na chamada desta função. Más outra função se faz necessário quando queremos criar valores aleatórios, porque é desagradável criar sempre a mesma sequência aleatória não é mesmo? Para fazer com que a sequência não seja a mesma a cada execução do programa, usamos a função srand(); que inicia a função rand(); com um valor denominado "semente", esta função recebe um argumento do tipo inteiro sem sinal, também chamado unsigned int. Más programadores iniciantes ainda tem outra frustação relacionada a geração de números aleatórios sequênciais, o que ocorre é que quando uma sequência é um tanto extensa, tende a repetir alguns números na mesma sequência. Más o problema acaba seguindo o método deste código, portanto,aproveite este exemplo que é uma ajuda muito boa aos iniciantes em Linguagem C. Veja abaixo imagens do programa em execução: http://2.bp.blogspot.com/-pNumUG46X_A/VdkCJrE28oI/AAAAAAAACSU/QENq1JIrcWk/s1600/srdn.PNG http://1.bp.blogspot.com/-0izVdsLR1lI/VdkCJ_yY0iI/AAAAAAAACSY/xnbGCYbWICM/s1600/srnd.PNG http://4.bp.blogspot.com/-q7lxAWyWKlc/VdkCJ5TbVDI/AAAAAAAACSc/gKwMzgepmIY/s1600/srndn.PNG Veja abaixo o link do código do programa: http://codigosfontes-ccplus-plus.blogspot.com.br/2015/08/aleatorios-de-1-100-sem-repeticoes.html
- 3 respostas
-
- aleatórios
- rand
-
(e %d mais)
Tags:
-
Galera, estou testando as funções de números aleatórios "rand","srand" e as bibliotecas "time.h" e "stdlib.h". Escrevi um código que imprime um número aleatório toda vez que se aperta enter, e funcionou, porém eu percebi que para esse número mudar demora 1 segundo. Eu queria saber se tem como esse tempo que pega outro número aletório diminuir. [RESOLVIDO] Consegui aqui, eu só precisava tirar minha srand do loop de repetição.