Forum INFOMATH
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-25%
Le deal à ne pas rater :
PC Portable Gamer 16,1” HP Victus 16 – 16 Go /512 Go
749.99 € 999.99 €
Voir le deal

la fonction random en c

5 participants

Aller en bas

la fonction random en c Empty la fonction random en c

Message par lina Mer 29 Avr - 2:34

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
Entier Naturel

Féminin
Nombre de messages : 7
Localisation : algerie
Réputation : 2
Points : 5699
Date d'inscription : 27/04/2009

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par Napoléon Mer 29 Avr - 12:06

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
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
CQFD.
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
la fonction random en c Left_bar_bleue999/1000la fonction random en c Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par moudhafer Mar 1 Juin - 19:21

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

moudhafer
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par informix Mar 1 Juin - 19:48

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
informix
Nombre Rationnel
Nombre Rationnel

Nombre de messages : 399
Réputation : 4
Points : 6525
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
la fonction random en c Left_bar_bleue1000/1000la fonction random en c Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par moudhafer Mar 1 Juin - 20:01

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?

moudhafer
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par methodiX Mar 1 Juin - 23:21

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 Smile

Je ne peux pas prouver mathématiquement cette conjecture.
methodiX
methodiX
Admin
Admin

Masculin
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:
la fonction random en c Left_bar_bleue1000/1000la fonction random en c Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par moudhafer Mer 2 Juin - 0:13

salem Smile
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$
[code/]
Smile

moudhafer
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par methodiX Mer 2 Juin - 0:25

Pourquoi tu as choisi un intervalle large Smile
tu triches Very Happy

Essaie avec I = [0, 20]
methodiX
methodiX
Admin
Admin

Masculin
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:
la fonction random en c Left_bar_bleue1000/1000la fonction random en c Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par moudhafer Mer 2 Juin - 18:24

mdrrrrrrrrrr
tu m'as fait trop rire Very Happy
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$
Smile

moudhafer
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par methodiX Mer 2 Juin - 21:55

Je ne sais pas si tu as deviné ou pas où je veux aller Smile

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
methodiX
Admin
Admin

Masculin
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:
la fonction random en c Left_bar_bleue1000/1000la fonction random en c Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par moudhafer Jeu 3 Juin - 3:54

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 Wink

moudhafer
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par methodiX Jeu 3 Juin - 23:53

Waiting for you ... Smile
methodiX
methodiX
Admin
Admin

Masculin
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:
la fonction random en c Left_bar_bleue1000/1000la fonction random en c Empty_bar_bleue  (1000/1000)

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par moudhafer Dim 6 Juin - 17:33

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???

moudhafer
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par Napoléon Dim 6 Juin - 23:42

Smile 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. la fonction random en c Icon_rolleyes
Napoléon
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
la fonction random en c Left_bar_bleue999/1000la fonction random en c Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par moudhafer Mar 8 Juin - 14:37

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

moudhafer
Entier Naturel
Entier Naturel

Masculin
Nombre de messages : 58
Age : 35
Localisation : france
Réputation : 0
Points : 5363
Date d'inscription : 26/05/2010

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par Napoléon Mer 9 Juin - 3:03

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
Napoléon
Admin
Admin

Masculin
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007

Feuille de personnage
Capacité linguistique:
la fonction random en c Left_bar_bleue999/1000la fonction random en c Empty_bar_bleue  (999/1000)

https://infomath.1fr1.net

Revenir en haut Aller en bas

la fonction random en c Empty Re: la fonction random en c

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum