Random numbers array, without duplicate.

A quick algorithm to male a random arrays without duplicate.

rand

See version :

Pas de dépendances

Download :

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

int *tirage(int nombre, int min, int max)
{
    int *tabelems, *ret, i, indice, maxi = max - min;
    if(min >= max || nombre > maxi + 1 || nombre < 1)
        return NULL;
    tabelems = malloc((maxi + 1) * sizeof(int));
    ret = malloc(nombre * sizeof(int));
    for(i = 0; i < maxi + 1; i++)
        tabelems[i] = i + min;
    for(i = 0; i < nombre; i++){
        indice = rand() % (maxi + 1);
        ret[i] = tabelems[indice];
        tabelems[indice] = tabelems[maxi];
        maxi--;
    }
    free(tabelems);
    return ret;
}

int main()
{
    int i,j,*tab;
    int nb = 7;
    srand(time(NULL));
    for(j = 0; j < 10; j++) 
    {
        if((tab = tirage(nb, 1, 49))) 
        {
            printf("Tirage %2d :", j + 1);
            for(i = 0; i < nb; i++)
                printf("  %d", tab[i]);
            printf("\n");
            free(tab);
        }
    }
    return 0;
}



Explanations

	No explanations yet.