[Ajuda] Programa (simples) em C

Só uma questão, o algoritmo recursivo não é péssimo? Uma repetição de um número aleatório faz com que se gere uma sequência completa.
É verdade, mas trocando um bocadinho as coisas já não:
Código:
void aleat( char *xpto, int n, int min, int max )
    {      
    if( n > 1) aleat( xpto+1, n-1, min, max );
    do *xpto = rand() % max + min;
        while( strchr( xpto+1, *xpto ) );
    }
 
O código acima não gera uma distribuição uniforme, ou seja, alguns números vão ter mais probabilidade de sair do que outros. Não se deve usar o operador mod com números aleatórios; especialmente com a implementação da função rand (podem dar uma vista de olhos na entrada do man desta função).
 
Back
Topo