• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

panzer

Gerador de números aleatórios em C

7 mensagens neste tópico

Boas a todos

tava a tentar fazer um Drugwars em C so que me faltam algumas coisas..

Alguem me sabe dizer o codigo para gerar números aleatórios de x a y?

e já agora gostava tambem de saber como se faz para limpar a tela se é que isso é possivel.

Thx

cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

int getRandom(int min,int max)
{
  int r;
  long num;
  time(&num);
  srand((unsigned)num);
  r=min+rand()%(max-min+1);

  return r;
}

acho que isto serve...

para limpar a tela, em Unix, normalmente faz-se 'system("clear");'.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

thanks a lot

so que a cena de limpar a tela não funciona comigo...

sabes o que puderá ser?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, estás em windows e o correcto é system("cls");

Contudo, isso é de evitar pois depois o programa nao é portável para outros sistemas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora uma duvida... se eu meter essa função num ciclo for simples do tipo

  for (i=0;i<100;i++)
  {
      t = getRandom(0,9);
      ++vector[t];
  }

Ele gera sempre o mesmo número... suponho que seja devido ao facto de a função srand usar o tempo... não há por enquanto maneira de gerar números aleatórios sem depender do tempo pois não?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu só sei gerar números aleatórios desta maneira, mas programas como o Mathematica não têm este problema, por isso deve haver maneira de o contornar  (quando tiver tempo, vou ver se investigo um pouco sobre isso...)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int seed;

int trand (void) {
  return(1+(rand()%(10-0)+0));
} 

int main (void) {
  int i;
  seed=time(NULL);
  srand(seed);
  for (i=0;i<100;i++)
    printf ("%i\n",trand());
  return 0;
}

gera sempre o mesmo número porque a função srand so deve ser usada uma vez no inicio e nao de cada vez que queres um numero.

é um erro comum.

espero ter ajudado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora