Bonjour,

Dans le cadre d'un exercice sur une fonction random, je dois pouvoir faire un tableau dynamique sur une plage définie par l'utilisateur..
Tout va bien quand celui ci ne choisi pas une plage qui dépasse 32767, qui est donc défini par RAND_MAX.

J'ai beau lire tout ce que je trouve sur cette fameuse fonction rand(),j'ai bien compris comment définir une plage, incluse ou pas, mais je ne comprend pas comment dépasser la valeur de RAND_MAX??


Est que l'on pourrait m'expliquer comment faire pour que ma fonction rand dépasse cette fameuse limite et me sorte des nombres qui sont compris dans mon intervalle svp??


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
int main(int argc, char *argv[])
{
	// =======================================================================================================
	// VARIABLE(S) LOCALE
	// =======================================================================================================
	long int i, dTailleTab;
	long int j = 0;
	long int k = 0;
	long int *tTabRandom = NULL;
	long int dNbrRand1, dNbrRand2;
	long int dNbrTemp;
 
 
 
	// =======================================================================================================
	// CODE MAIN
	// =======================================================================================================
	printf("Nombre de pistes : ");
	scanf("%d", &dTailleTab);
 
	// -------------------------------------------------------------------------------------------------------	
	// Ajout d'un element aléatoire a la fonction random, via la fonction time() de la librairie time.h
	// Sinon la fonction random "choisi" tjrs les même résultats
	srand(time(NULL));
 
	// -------------------------------------------------------------------------------------------------------	
	// Création du tableau d'index et initialisation
	tTabRandom = malloc(dTailleTab * sizeof(long int));
 
	for (i = 0; i < dTailleTab; i++)
	{
		tTabRandom[i] = 1 + i;
	}
 
 
 
	// -------------------------------------------------------------------------------------------------------	
	// Boucle de randomization du tableau
	for (i = 0; i < dTailleTab; i++)
	{
		// -------------------------------------------------------------------------------------------------------	
		// La fonction random retourne deux  nombre compris dans la taille du tableau tTabIndex,
		// et vérifie que les deux chiffres sont toujours différent
		do
		{
			dNbrRand1 = (rand() % (dTailleTab));
			dNbrRand2 = (rand() % (dTailleTab));
			//printf("%d. dNbrRand1 = %d | dNbrRand2 = %d\n", i, dNbrRand1, dNbrRand2);
				if (dNbrRand1 == dNbrRand2)
				{
					j++;
					//printf("\t%d WARNING!! dNbrRand1 = %d | dNbrRand2 = %d\n", i, dNbrRand1, dNbrRand2);
				}
				if (dNbrRand1 >= 32767 || dNbrRand2 >= 32767)
				{
					//printf("\t%d dNbrRand1 = %d | dNbrRand2 = %d\n", i, dNbrRand1, dNbrRand2);
					k++;
				}
		}
		while (dNbrRand1 == dNbrRand2);
 
		// -------------------------------------------------------------------------------------------------------	
		// Utilisation des nombres retourné par la fonction rand() pour intervertir les nombres aux index 
		// correspondant dans ptTabRandom 
		dNbrTemp = tTabRandom[dNbrRand2];
		tTabRandom[dNbrRand2] = tTabRandom[dNbrRand1];
		tTabRandom[dNbrRand1] = dNbrTemp;
	}
 
	printf("\n");
 
	for (i = 0; i < dTailleTab; i++)
	{
			printf(" %d |", tTabRandom[i]);
	}
 
	printf("\n");
	printf("WARNING = %d\n", j);
	printf("+ 32767 = %d\n", j);
	printf("\n");
	free(tTabRandom);
	return 0;
}
Les printf un peu partout sont la pour m'aider a voir ce qu'il se passe dans mon code..

Merci d'avance