la fonction random en c
5 participants
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
la fonction random en c
bonjour, j'ai un tp en langage c ,qui est un programme de simulation de deux files d'attente l'une des clients prioritaires et l'autre des non prioritaires et la priorité est absolue et preenptive ,je suis oubliger d'utliser la fonction radom pour generer les nombres aleatoires et je ne sai pa comment la utiliser je demande une aide sur ça.et merci d'avance.
lina- Entier Naturel
-
Nombre de messages : 7
Localisation : algerie
Réputation : 2
Points : 5699
Date d'inscription : 27/04/2009
Re: la fonction random en c
En C, la fonction rand() donne des valeurs aléatoires
en 0 et MAX_RAND de (si je me rappelle bien du nom de la constante). La fonction rand() génère des entiers uniformément distribués sur l'intervalle [0, RAND_MAX].
Il est conseillé d'appeler une seule fois, avant "rand()", la fonction
pour pouvoir générer des valeurs aléatoires vraies. çàd à chaque exécution du programme, la fonction rand() génère une nouvelle séquence de nombre différente de ce qui a été généré.
Pour générer des nombres aléatoires entre [0, 1], il suffit de diviser les valeurs données par rand() par la plus grande valeur MAX_RAND :
On peut en déduire une méthode pour générer des valeurs aléatoires entre dans l'intervalle [a, b]:
En effet, les inégalités suivantes permettent de démontrer la validité de la formule :
en 0 et MAX_RAND de (si je me rappelle bien du nom de la constante). La fonction rand() génère des entiers uniformément distribués sur l'intervalle [0, RAND_MAX].
Il est conseillé d'appeler une seule fois, avant "rand()", la fonction
- Code:
srand( time(NULL));
pour pouvoir générer des valeurs aléatoires vraies. çàd à chaque exécution du programme, la fonction rand() génère une nouvelle séquence de nombre différente de ce qui a été généré.
Pour générer des nombres aléatoires entre [0, 1], il suffit de diviser les valeurs données par rand() par la plus grande valeur MAX_RAND :
- Code:
#include
int main()
{
float r;
srand( time(NULL));
r = (float)(rand()) / (float)(MAX_RAND);
}
On peut en déduire une méthode pour générer des valeurs aléatoires entre dans l'intervalle [a, b]:
- Code:
r = a + (b-a)*((float)(rand()) / (float)(MAX_RAND));
En effet, les inégalités suivantes permettent de démontrer la validité de la formule :
- Code:
0 <= rand()/MAX_RAND <= 1
0 <= (b-a) * rand()/MAX_RAND <= (b-a)
a <= a + (b-a)* rand()/MAX_RAND <= b
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: la fonction random en c
c'est faisable aussi avec la fonction random() qui retourne un entier entre o et MAX_RAND
donc si on veut un entier entre a et b on fait
random()%(b-a)+a
bonne continuation
donc si on veut un entier entre a et b on fait
random()%(b-a)+a
bonne continuation
moudhafer- Entier Naturel
-
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010
Re: la fonction random en c
moudhafer a écrit:c'est faisable aussi avec la fonction random() qui retourne un entier entre o et MAX_RAND
donc si on veut un entier entre a et b on fait
random()%(b-a)+a
bonne continuation
Ce n'est pas conseillé d'utiliser cette méthode @moudhafer, parce que les entiers générés ne sont pas "très aléatoires" vu le MODULO.
pefff, c'est un peu compliqué à expliquer et/ou à prouver aussi...
Essaie de la développer en C et poste nous le résultat, tu vas voir que ce n'est pas satisfaisant.
informix- Nombre Rationnel
- Nombre de messages : 399
Réputation : 4
Points : 6525
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: la fonction random en c
okkk je la ferai ce soir je suis pas devant mon pc.
mais je crois qu'il n'y a aucun problem si on utilise le modilo(mon avis) le puisque le random() retourne un entier trés aleatoires je crois en lui appliquant un modulo,il va rester tjrs aléatoires,nn?
mais je crois qu'il n'y a aucun problem si on utilise le modilo(mon avis) le puisque le random() retourne un entier trés aleatoires je crois en lui appliquant un modulo,il va rester tjrs aléatoires,nn?
moudhafer- Entier Naturel
-
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010
Re: la fonction random en c
moudhafer a écrit:okkk je la ferai ce soir je suis pas devant mon pc.
mais je crois qu'il n'y a aucun problem si on utilise le modilo(mon avis) le puisque le random() retourne un entier trés aleatoires je crois en lui appliquant un modulo,il va rester tjrs aléatoires,nn?
Ca devient moins aléatoire que la méthode indiqué précédemment. Tu seras plus convaincu si tu programmes toi même ta méthode et tu nous postes le résultat de la simulation
Je ne peux pas prouver mathématiquement cette conjecture.
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: la fonction random en c
salem
voila j'ai essayé
voila le code
et voila l'execution je vois que les entiers sont trééééés aléatoires en plusieurs executions
voila j'ai essayé
voila le code
- Code:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int main(){
srand( time(NULL));
int x,i;
int a=10;
int b=500;
for(i=0;i<20;i++){
x=random()%(b-a)+a;
printf("%d ",x);
}
return 0;}
[code/]
et voila l'execution je vois que les entiers sont trééééés aléatoires en plusieurs executions
- Code:
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
120 212 29 274 106 25 203 353 85 301 186 285 359 460 142 18 263 162 457 318 salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
32 254 399 478 13 383 278 52 367 274 207 184 44 50 302 201 390 103 168 386 salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
179 418 266 399 299 39 338 317 340 319 128 36 45 410 235 195 344 271 338 335 salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
213 158 202 103 153 363 37 298 166 119 414 218 353 150 225 177 419 288 353 125 salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
107 449 74 260 423 51 246 479 416 235 265 199 299 187 367 111 433 339 387 427 salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
364 46 331 436 95 81 137 202 45 94 358 364 314 277 81 202 455 116 454 409 salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
109 339 220 488 408 412 129 310 341 186 148 34 42 318 66 276 349 62 72 294 salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$
moudhafer- Entier Naturel
-
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010
Re: la fonction random en c
Pourquoi tu as choisi un intervalle large
tu triches
Essaie avec I = [0, 20]
tu triches
Essaie avec I = [0, 20]
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: la fonction random en c
mdrrrrrrrrrr
tu m'as fait trop rire
lool
alah ybarek tetdalel
voila :
tu m'as fait trop rire
lool
alah ybarek tetdalel
voila :
- Code:
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
4 8 8 2 13 18 8 15 13 1 19 4 19 10 2 19 1 16 11 16
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
4 0 13 0 5 14 10 15 14 16 13 7 6 15 15 16 15 13 18 18
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
3 7 19 5 9 15 15 4 15 8 9 19 18 17 18 11 11 17 0 4
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
19 13 0 11 5 17 2 14 3 9 7 14 16 19 17 14 12 8 13 19
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
1 9 10 16 10 7 3 4 5 2 5 18 11 15 1 5 18 7 15 6
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
15 7 16 19 3 1 9 5 12 19 4 12 16 19 8 3 15 12 17 13
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
2 10 5 11 5 17 12 16 14 19 13 8 4 12 9 1 13 15 14 14
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$ ./alea
13 0 18 16 1 10 1 13 1 0 4 18 19 15 2 16 13 12 18 16
salhi@salhi-laptop:~/Bureau/MOUDHAFER/tt/jeux$
moudhafer- Entier Naturel
-
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010
Re: la fonction random en c
Je ne sais pas si tu as deviné ou pas où je veux aller
Je veux que tu m'aider à vérifier statistiquement que la suite que tu génère par le modulo est plus stable, moins aléatoire que la suite générée par la première méthode citée en haut.
Je te propose de faire un grand nombre de simulation et tu calcule la moyenne est l'écart type de l'échantillon que tu as obtenu.
Tu dois trouver une moyenne proche de M = (a+b)/2, et un écart type proche de l'écart type théorique non biaisé.
Je conjecture que les nombres générés par ta méthode n'ont pas une distribution uniforme.
Je veux que tu m'aider à vérifier statistiquement que la suite que tu génère par le modulo est plus stable, moins aléatoire que la suite générée par la première méthode citée en haut.
Je te propose de faire un grand nombre de simulation et tu calcule la moyenne est l'écart type de l'échantillon que tu as obtenu.
Tu dois trouver une moyenne proche de M = (a+b)/2, et un écart type proche de l'écart type théorique non biaisé.
Je conjecture que les nombres générés par ta méthode n'ont pas une distribution uniforme.
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: la fonction random en c
a333 tu peux dire que je suis presque nulle en math et statistique :p
tu sais ce que je vais faire pour te convaincre???je vais ecrire les deux manieres ,generer un grand nombre des entiers aleatoires(+que 10000) et dessiner les deux courbes.
je le ferai demain nchalah et je vais poster les courbes
tu sais ce que je vais faire pour te convaincre???je vais ecrire les deux manieres ,generer un grand nombre des entiers aleatoires(+que 10000) et dessiner les deux courbes.
je le ferai demain nchalah et je vais poster les courbes
moudhafer- Entier Naturel
-
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010
Re: la fonction random en c
Waiting for you ...
methodiX- Admin
-
Nombre de messages : 1260
Localisation : Le couloir de l'école polytechnique de Tunis
Réputation : 68
Points : 7253
Date d'inscription : 22/03/2007
Feuille de personnage
Capacité linguistique:
(1000/1000)
Re: la fonction random en c
salut c'est fait j'ai dessiné la courbe de 100 entiers aléatoires dans l'intervalle [0..100],j'ai vu que c tréééées aléatoires.mais j'ai un probleme je sais pas comment poster ma courbe wur le forum O^o lool
quelqu'un peut m'aider???
quelqu'un peut m'aider???
moudhafer- Entier Naturel
-
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010
Re: la fonction random en c
Vous rigoler bien sur le forum @methodiX et @moudhafer.
Il vaut mieux donner des chiffres (moyenne, écart type, ou d'autres indicateurs) que de construire une courbe.
Pour poster une courbe sur le forum, il faut l'héberger quelques part puis mettre un lien vers elle en utilisant le bouton "insertion d'une image" qui se trouve dans la barre en haut.
Il vaut mieux donner des chiffres (moyenne, écart type, ou d'autres indicateurs) que de construire une courbe.
Pour poster une courbe sur le forum, il faut l'héberger quelques part puis mettre un lien vers elle en utilisant le bouton "insertion d'une image" qui se trouve dans la barre en haut.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: la fonction random en c
mdrr
okkk bon en mathématique j'avoue que je ne suis pas assez compétent,en plus la statistique!!lool
ca passe avec facebook??
merci
okkk bon en mathématique j'avoue que je ne suis pas assez compétent,en plus la statistique!!lool
ca passe avec facebook??
merci
moudhafer- Entier Naturel
-
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010
Re: la fonction random en c
moudhafer a écrit:mdrr
okkk bon en mathématique j'avoue que je ne suis pas assez compétent,en plus la statistique!!lool
ca passe avec facebook??
merci
je n'ai pas essayé de le faire à travers facebook. Je pense que ce n'est pas faisable.
Par contre c'est très faisable à travers le forum lui même, il y a un espace réservé à chaque membre. C'est l'icône "Héberger une image" qui est devant toi en mode Édition.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Sujets similaires
» RANDOM
» Devinette avec Random
» Utilisation de la fonction RANDOM en PASCAL
» Présentation de la fonction Random en Pascal
» Exercice 7 page 121: Boucle FOR + Random
» Devinette avec Random
» Utilisation de la fonction RANDOM en PASCAL
» Présentation de la fonction Random en Pascal
» Exercice 7 page 121: Boucle FOR + Random
Forum INFOMATH :: Enseignement de l'informatique :: INFO - Supérieur (Etudiants et Professionnels) :: C/C++
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum