Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cacique

gerando numeros aleatórios

Recommended Posts

Olá!!Se você for em C você pode usar a função rand(), ela é uma função prórpia para gerar números aleatórios.Mais ou menos assim:int xx=rand(); Se não me engano os valores podem estar entre 0 e 32767, daí se você precisa de valores menores é só fazer uma divisão de x por algum número suficiente para gerar o q você precisa.Como você quer gerar um vetor de 100 posições com números aleatórios coloca isso dentro de um "laço"Espero ter ajudado!!Danielle

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal preciso gerar um vetor de 100 posições na memória com valores aletatórios entre 0 e 20000.
Faça um vetor de 100 posições e depois utilize um loop para preenche-lo.

 

Exemplo de utilização da função indicada no post anterior:

int max=10; // max é o número limite a ser geradosrand(time(NULL)); /* os números não são realmente aleatórios, isto vai ajudar a que não gere sempre os mesmos números. */printf("%d\n",rand()%max+1);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um programa de exemplo, usando as dicas do skimo-solar...

 

#include <iostream>

#include <stdlib.h>

#include <time.h>

using namespace std;

 

int main()

{

int *vetor;

vetor = new int[100];

cout << "RAND_MAX = " << RAND_MAX << endl; // só pra você ver quanto vale RAND_MAX

srand( time( NULL ) );

 

for (int i = 0; i<100; i++)

{

vetor = rand() % 20001; /* o retorno da função rand() pode ser entre 0 e 32767, então pra você fazer ele ser entre 0 e 2000 basta você pegar o resto da divisão ( usando o operador %) do retorno de rand() por 20001*/

}

for (int i = 0; i<100; i++) //exibe

{

cout << "Vetor[" << i << "] = "<< vetor << endl;

}

 

delete[] vetor;

system("pause>>null");

return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

uHm, entendi, mas como fazer para, por exemplo.. quero gerar valores randomicos de 0 a 7, mas os valores de 4 a 7 terem 8% de chance de aparecer?? Será que alguem consegue resolver esse desafio?? http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

 

iria ficar assim:

int max=7;

srand(time(NULL));

printf("%d\n",rand()%max+1);

 

e agora para os numeros de 4 a 7 terem 8% de chance??? http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí começa a complicar, rand é uma função "aleatória", ou melhor, o mais perto que podemos chegar de ser aleatório.Como são 8 números temos 12,5% de chance de cair em cada um deles. Para se fazer cair para 8% nós poderíamos tentar fazer algo como, sortear entre sortear entre 12, não entre 8. Mas sempre que cair em 0 ou em 1, fica resultado 0. Se cair entre 2 e 3 fica resultado 1, se ficar entre 4 e 5 fica resultado 2, entre 6 e 7 fica resultado 3, se cair 8 fica resultado 4 e por aí vai.Resumindo:0 ou 1 = 02 ou 3 = 14 ou 5 = 26 ou 7 = 38 = 49 = 510 = 611 = 7Ou seja, agora teremos 8.33% de chance de cair entre 4 e 7, e teremos 16,66% de chance de cair entre 0 e 3.Mas agora acho que fiz seu dever de casa ;). Boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hm , bom pensamento cara.. a unica coisa que não entendi bem, é por que usar esse tal "srand(time(NULL));".. é para, por exemplo, tenho numeros de 0 a 10, e ele nunca repetir um numero até que todos os numero 0 1 2 3 4 5 6 7 8 9 e 10 forem listados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

a unica coisa que não entendi bem, é por que usar esse tal "srand(time(NULL));".. é para, por exemplo, tenho numeros de 0 a 10, e ele nunca repetir um numero até que todos os numero 0 1 2 3 4 5 6 7 8 9 e 10 forem listados?

Não exatamente.Se você fizer um programa que gera números aleatórios com srand(100) por exemplo (ou sem), você vai ver que irá gerar os números, mas cada vez que você executar o programa serão os mesmos números.Com o srand(time(NULL)) isto não vai acontecer (a não ser que você execute o programa várias vezes ao mesmo tempo).

Compartilhar este post


Link para o post
Compartilhar em outros sites

"srand" sets the "seed" for a pseudo-random number generator. Once the seed has been set, you may call "rand" to obtain pseudo-random numbers.If you always use the same seed, you will always obtain the same sequence of pseudo-random numbers from "rand". This helps you to duplicate results for debugging purposes. A useful random sort of seed might be based on the time of day.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu criei estes tempos atrás um programinha em C para criar senhas aletórias ai ele cria na sequencia caracter especial, letra maiuscula, número e dai 5 letras minusculas formando uma senha de 8 caracteres totalmente randomica.Exemplo de uma senha gerada assim: &X8pdyqbE eu utilizei uam função que achei pela internet que ela utiliza como semente o segundo do relógio do SO.Segue ela aqui para você ver.int getRandom2(int de, int ate) { // passa como parametros o valor de quanto até quanto vai o que você quer gerar.srand(GetTickCount()); //Aqui ele pega a semente,, que precisa utilizar a biblioteca Time.hint random = ( rand() %10 ) + de; aqui é o jogo para fazer aleatório.return random; // aqui retorna o numero}Espero ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for linguagem C

...

Voce pode utilizar o comando random

 

#incluse<stdlib.h>

main{

int x;

randomize();

x = random(100);

// Como coloquei 100 entre parentese o programa vai colocar um numero aleatorio entre 0 e 99, se você

//colocar 20 entre parenteses o programa vai colocar um numero aleatorio entre 0 e 19..e assim vai..

getch;

}

 

no caso como é um vetor que voce quer pod efazer assim

 

#incluse<stdlib.h>

main{

int vetor[100] // cria vetor com 100 posicoes

int i

randomize();

for (i=0;i>100;i++);

vetor = random(100); // aqui o programa vai colocar um numero aleatoria de 0 a 99

, na posicaodo vetor que seje igual ao valor do i no loop...

getch;

}

 

OBS.: Provavelmente a sintave acime tem um ou outro errinho, mas dai so você arrumar e compilar, quanto ao comando randomize(); e random(100); ja foram testados e funcionam da maneira que voc quer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como a resposta já foi respondida,Me surgiu uma curiosidade que não to conseguindo resolver..- Como fazer para a cada vez que repetir os numeros, não surgirem numeros iguais até usar todos eles?Por exemplo, tenho 10 numeros.. de 1 a 10, aí mando ele randomizar.. 1 - 2,3,1,7,6,9,10,8,4,5 (sem repetir)..mais uma vez..2 - 6,1,2,5,4,3,7,9,8,10..o problema é que ele faz isso, 3,5,3,7,5,8,9,1,5,4 (repete =\)como faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.