Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com Rand()


Heldinho

Pergunta

Ae pessoal, preciso de numeros randomicos entre 1 e 25.... com if e while eu consegui eliminar o 1 e qualquer numero maior q 25, mas esta operação demorou bastante quando tentei com 5 numeros um diferente do outro........(demorou enquanto o programa estava sendo executado), então, preciso definit o valor máximo do rand();

eu olhei em um site, que pra definir isto no djgpp, basta a seguinte linha:

#define RAND_MAX 25

bom, não sei o que deu... olhem o erro:

C:\djgpp\bin>gcc -o random.exe random.c
random.c:5: warning: `RAND_MAX' redefined
c:/djgpp/include/stdlib.h:21: warning: this is the location of the previous definition
meu código exemplo:
#include <stdlib.h>
#include <stdio.h>

#define RAND_MAX 25


int main(void){
int x,y,z;
while(1){
x=rand();
y=rand();
z=rand();
if(z != x && z!= y && y != x){
printf("%d , %d , %d",x,y,z);
return 0;
}
}
}

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Dá uma lida nisso. Explica muita coisa sobre numeros aleatórios.

Se quiser uma função pronta, taqui:

int random_range(int lowest_number, int highest_number)
{
    if(lowest_number > highest_number){
        swap(lowest_number, highest_number);
    }

    int range = highest_number - lowest_number + 1;
    return lowest_number + int(range * rand()/(RAND_MAX + 1.0));
}

Link para o comentário
Compartilhar em outros sites

  • 0

Ae iSoron, valeu pela ajuda, mas por este codigo que voce postou aki não funcionou, olha meu código:

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

int random_range(int lowest_number, int highest_number)
{
   int range = highest_number - lowest_number + 1;
   return lowest_number + (range * rand()/(RAND_MAX + 1.0));
}

int main(){
int x;
int y;
int z;
while(1){

x=random_range(1,25);
y=random_range(1,25);
z=random_range(1,25);
if(x != y && x != z && z != y){
printf("%d, %d, %d",x,y,z);
}
}
}

nota: preciso de 5 numeros randomicos(no exemplo tem apenas 3) entre 1 e 25 e que sejam diferentes entre eles mesmos.Na lógica meu codigo funcionaria, mas os numeros não estão "Ransomizando"... da um help ae biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz uma correção no código.

Realmente, ele estava retornando um double, quando era pra ser um int. dry.gif

Além disso, dê uma olhada na função srand e na biblioteca <ctime> que eu adicionei.

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

int random_range(int lowest_number, int highest_number) {
    int range = highest_number - lowest_number + 1;
    return lowest_number + (range * rand()/(RAND_MAX + 1));
}

int main(){
    int x;
    int y;
    int z;
    
    // inicia o rand
    srand((unsigned)time(0));
    rand();
    
    // entra no loop
    while(1){

        x=random_range(1,25);
        y=random_range(1,25);
        z=random_range(1,25);
        if(x != y && x != z && z != y){
            printf("%d, %d, %d",x,y,z);
            return 0;
        }
    }
}

Link para o comentário
Compartilhar em outros sites

  • 0

Ae cara, muito obrigado mesmo, consegui fazer funcionar, vlw pelo site wink.gif se precisar de qualquer coisa, estamos aí laugh.gif ...

olha o que eu fiz(consegui de uma maneira mais simples, e o programa termina mais rápido. no seu exemplo, eu tentei executar, mas demorou muito, ai eu parei tongue.gif ):

#include <stdlib.h>
#include <stdio.h>
#define RAND_MAX 25
int x;
int random_range(int lowest_number, int highest_number)
{


x=x+1;
if(x>5){
x=1;
}
return ((2 + (rand()%25))-x);
}

int main(){
int xx;
int y;
int z;
x=1;
while(1){

z=random_range(10,10);
y=random_range(10,10);
xx=random_range(10,10);
if(x>0 && y>0 && z>0 && xx!=z && xx != y && y!=z){
printf("%d %d %d\n",xx,y,z);
return 0;
}

}
}

até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

não, simplesmente demorou demais.... tipo.... seilá! tongue.gif demorou mais de 5 segundos, acho q meu código tava errado, auhauhauahuahuahau......

ps: No meu codigo acima, eu ainda não tinha colocado os parametros da funcao random_range pra funcionar... kem quizer fazer direitin pode colocar.. wink.gif

até mais! e obrigado dinovo pela dica do srand tongue.gif..

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...