Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#101 25-05-2016 18:39:22

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Variable aléatoire at fonction rand()

Je veux bien continuer à condition de définir et de fixer le protocole.
Donc, la balle est dans ton camp. De toute façon, il faut au moins un dé à 100 faces.

Hors ligne

#102 26-05-2016 14:03:05

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Variable aléatoire at fonction rand()

Bonjour,
Si c'est le source de rand dont tu as besoin pour que Gérard te donne son avis, alors voilà :


/*-----------------------------------------------------------------------*
 * filename - rand.c
 *
 * function(s)
 *        srand - initializes random number generator
 *        rand  - random number generator
 *-----------------------------------------------------------------------*/

/*
 *      C/C++ Run Time Library - Version 11.0
 *
 *      Copyright (c) 1987, 2002 by Borland Software Corporation
 *      All Rights Reserved.
 *
 */

/* $Revision: 9.6 $        */

#pragma inline

#ifdef _MT
#include <_thread.h>
#endif
#include <stdlib.h>

#define MULTIPLIER      0x015a4e35L
#define INCREMENT       1

#if !defined(_SEED_T)
#define _SEED_T
typedef struct
{
    unsigned lo;
    unsigned hi;
} __seed_t;
#endif

#ifdef _MT
#define Seed _thread_data()->thread_seed
#else
static  __seed_t  Seed = { 1, 0 };
#endif

/*---------------------------------------------------------------------*

Name            srand - initializes random number generator

Usage           void srand(unsigned seed);

Prototype in    stdlib.h

Description     see rand below

Return value    Nothing

*---------------------------------------------------------------------*/

void _RTLENTRY _EXPFUNC srand(unsigned seed)
{
        Seed.lo = seed;
        Seed.hi = 0;
        rand();    // primes the seed by using the first number which
                   // is usually not as random as the subsequent numbers
                   // are.
}

static void boot_srand(void)
{
#pragma startup boot_srand 10 /* Initializes the random seed */
    srand(1);
}


/*---------------------------------------------------------------------*

Name            rand - random number generator

Usage           int rand(void);

Related
functions usage void srand(unsigned seed);

Prototype in    stdlib.h

Description     rand uses a multiplicative congruential random number
                generator with period 2^32 to return successive pseudo-
                random numbers in the range from 0 to 2^15 - 1.

                The generator is reinitialized by calling srand with an
                argument value of 1. It can be set to a new starting point by
                calling srand with a given seed number.

*---------------------------------------------------------------------*/

int _RTLENTRY _EXPFUNC rand(void)
{
        Seed.lo = MULTIPLIER * Seed.lo + INCREMENT;
        return((int)(Seed.lo >> 16) & 0x7fff);
}

/*---------------------------------------------------------------------*

Name            _lrand - long random number generator

Usage           long _lrand(void);

Related
functions usage void srand(unsigned seed);
                int rand(void);

Prototype in    stdlib.h

Description     _rand uses a multiplicative congruential random number
                generator with period 2^64 to return successive pseudo-
                random numbers in the range from 0 to 2^31 - 1.

                The generator is reinitialized by calling srand with an
                argument value of 1. It can be set to a new starting point by
                calling srand with a given seed number.

*---------------------------------------------------------------------*/

long _RTLENTRY _EXPFUNC _lrand(void)
{
//      Seed = MULTIPLIER * Seed + INCREMENT;
//      return((int)(Seed & 0x7fffffffL));

    _EBX = Seed.hi;            /* use EBX so MT Seed call preserves */
    _ESI = Seed.lo;

    asm    mov    eax, ebx
    asm    mov    ecx, 015Ah
    asm    mov    ebx, 4E35h


    asm    test    eax, eax
    asm    jz    nohi1
    asm    mul    ebx        

nohi1:
    asm    xchg    ecx, eax        
    asm    mul    esi
    asm    add    eax, ecx
           
    asm    xchg    eax, esi
    asm    mul    ebx
    asm    add    edx, esi
           
    asm    add    eax, 1
    asm    adc    edx, 0
    asm    mov    ebx, eax    /* use EBX so MT Seed call preserves */
    asm    mov    esi, edx    /* use ESI so MT Seed call preserves */
           
    Seed.lo = _EBX;
    Seed.hi = _ESI;
    return _ESI & 0x7fffffff;
}
 

Par ailleurs, je me demande si le résultat que tu as montré n'est pas plutôt celui que j'ai obtenu en PHP.
De mémoire, dans une vieille discussion tu te demandais d'où venait la limite de 30 valeurs lues pour une même chose. Là, tu en utilises 16, c'est un peu mesquin.

Hors ligne

#103 26-05-2016 14:22:29

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Merci pour le source de rand
Et si je te dis qu'on utilise 16000 ?

Hors ligne

#104 26-05-2016 14:40:26

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Variable aléatoire at fonction rand()

Si tu veux faire des essais significatifs, utilise plutôt cela.
Que tu utilise 16000 ou 20, c'est pas tr-s différent. Ce que tu observes, c'est la répartition des 16 faces. D'ailleurs, c'est le première réaction que tu as eue.


int main()  // suivant 188
{
  srand (time (NULL)) ; // si on veut indexer la graine sur le temps machine
  int Res[100];
  for (int i=0; i<100; i++) Res[i]=0;
/* le principe est de faire 10 successifs, de cumuler les résultats
et à chaque étape calculer l'emq
*/
  for (int jeu=0; jeu < 10; jeu++)
  {
    for (int fois=0; fois<10000; fois++)
    {
// on lance 10000 fois un dé à 100 faces et
// on compte le nombre de fois de sortie de chaque face
      Res[rand()%100]++ ;
    }
    double Moy=100. + 100.*jeu;
    double Var=0;
    for (int j=0; j<100; j++)
    {
      double diff = Moy-Res[j];
      Var+=diff*diff;
    }
    double Emq=sqrt(Var/Moy);
    fprintf(espion,"Jeu=%d Moy=%0.2f Emq=%0.2f\n",jeu,Moy,Emq);
  }
//  for (int i=0; i<100; i++)
//    fprintf(espion,"%d\n",Res[i]) ;
//  system("pause");    //getch();
  return 0 ;
}
 

Hors ligne

#105 26-05-2016 15:16:44

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

en effet, c'est une réaction rapide et facile. Tu as lu ma réponse à cette réaction ?

Hors ligne

#106 26-05-2016 15:42:16

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Variable aléatoire at fonction rand()

Léon a écrit :

en effet, c'est une réaction rapide et facile. Tu as lu ma réponse à cette réaction ?

Ben, naturellement. D'ailleurs elle (celle d'origine) est parfaitement justifiée.
Exemple, il y a quelque années, Doraki a accepté de faire une expérience : un dé (à jouer ordinaire), lancé une trentaine de fois vérifie la répartition normale des écarts à la moyenne. Comme il n'y avait que 6 faces, on s'est limité à 4 classes.
En vertu de la loi des grands nombres et conformément à l'expérience, la moyenne est obtenue assez rapidement (cf application de Monte-Carlo).
Donc que tu fasse 30 essais (et non 20 comme écrit par ailleurs) donnera presque le même résultat qu'avec 16000. Les probabilités n'ont pas beaucoup de relations avec les proportions.

Tiens, à propos des 16000 jets de dé, si les 16 premiers tombaient sur 1, le résultat ne s'en ressentirait pas, et pourtant c'est impossible.

Hors ligne

#107 26-05-2016 16:14:24

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Dlzlogic a écrit :
Léon a écrit :

en effet, c'est une réaction rapide et facile. Tu as lu ma réponse à cette réaction ?

Ben, naturellement. D'ailleurs elle (celle d'origine) est parfaitement justifiée.

Donc c'est pas choquant qu'un phénomène d'une probabilité 1 / 1800 se produise du premier coup.
Donc qu'une pièce de monnaie tombe douze fois du même coté consécutivement ne te choque pas.
Moi, je trouve cela assez anormal...

Dlzlogic a écrit :

Les probabilités n'ont pas beaucoup de relations avec les proportions.

ah bon ?

Hors ligne

#108 26-05-2016 16:59:37

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Je reviens encore une fois avec un programme en C pour tester un RNG. Il se base uniquement sur un calcul de moyenne, de variance et de co-variance.
Pourquoi variance ? plus facile à étudier mathématiquement que l'écart-type (étudier l'écart-type est difficile à cause de sa racine carrée)
Pourquoi la co-variance ? pour vérifier un peu l'indépendance des tirages successifs ( indépendance => co-variance nulle)

En fait, on peut comparer les résultats obtenus aux valeurs théoriques précisées à l'affichage :
la probabilité d'être à l'intérieur de l'intervalle théorique est de 99% (moyenne +- 2.6 * écart-type).
Donc se retrouver à l'extérieur est assez suspect.

Le nombre de tirages est "fois = 16000" ; le nombre de faces est "face = 100" ;

On tire deux séries de 16000 entiers entre 0 et 99 , puis on calcule leur moyennes, variances, et co-variance.


#include <stdio.h>
#include <math.h>

int main()
{
  int face=100 ;
  int fois=16000 ;

  double m=(face-1)/2. ; // esperance de rand()%face
  double v=(face*face-1)/12. ; // variance de rand()%face
  double w=(face*face-4)*(face*face-1)/180. ; // variance de variance de rand()%face

  // srand (time (NULL)) ; // si on veut indexer la graine sur le temps machine

  double esp_x=0 ; double esp_y=0 ;
  double var_x=0 ; double var_y=0 ;
  double co_var=0 ;
  int i=0 ; int x=0 ; int y=0 ;
  for (i=0; i<fois; i++)
  {
    x = rand()%face ; y = rand()%face ;
    esp_x += x ; esp_y += y ;
    var_x += (x-m)*(x-m) ; var_y += (y-m)*(y-m) ;
    co_var += (x-m)*(y-m) ;
  }

  esp_x = esp_x / fois ; esp_y = esp_y / fois ;
  var_x = var_x / fois ; var_y = var_y / fois ;  
  co_var = co_var / fois ;

  double esp_min = m - 2.6*sqrt(v/fois) ;
  double esp_max = m + 2.6*sqrt(v/fois) ;

  double var_min = v - 2.6*sqrt(w/fois) ;
  double var_max = v + 2.6*sqrt(w/fois) ;

  double co_var_min = 0 - 2.6*sqrt(v*v/fois) ;
  double co_var_max = 0 + 2.6*sqrt(v*v/fois) ;

  printf("esperances = %0.3f et %0.3f , theorie (99) [ %0.3f, %0.3f ] \n",esp_x, esp_y, esp_min, esp_max) ;
  printf("variances = %0.3f et %0.3f , theorie (99) [ %0.3f, %0.3f ] \n",var_x, var_y, var_min, var_max) ;
  printf("co-variance = %0.3f , theorie (99) [ %0.3f, %0.3f ] \n",co_var, co_var_min, co_var_max) ;

return 0;
}
 

Avec "mon C", j'obtiens :

esperances = 49.607 et 49.551 , theorie (99) [ 48.907, 50.093 ]
variances = 844.146 et 825.321 , theorie (99) [ 817.933, 848.567 ]
co-variance = -8.823 , theorie (99) [ -17.127, 17.127 ]

ce qui parait ok.

Et vous ?

Dernière modification par leon1789 (26-05-2016 19:30:29)

Hors ligne

#109 26-05-2016 17:37:03

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

avec MAPLE :

esperances = 49.15700000 et 49.89487500
variances = 834.6355000 et 830.7966250
co-variance = 10.49512500

ce qui paraît ok.

Hors ligne

#110 26-05-2016 17:38:51

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Variable aléatoire at fonction rand()

Bonjour,

Résultat du lancement de ce prog. C via DevC++ 
Sans activation de srand() :

esperances  =  49.346 et  50.229, theorie (99) [  48.907,  50.093 ]
variances   = 830.816 et 839.171, theorie (99) [ 817.933, 8480.567 ]
co-variance =   4,613,            theorie (99) [ -17.127,  17.127 ]

Avec :

esperances  =  49.760 et  50.229, theorie (99) [  48.907,  50.093 ]
variances   = 830.816 et 839.171, theorie (99) [ 817.933, 8480.567 ]
co-variance =   4,613,            theorie (99) [ -17.127,  17.127 ]

--------------------------------------------------------------------------------

Résultat du lancement de ce prog. C via CodeBlocks :
Sans activation de srand() :

esperances  =  49.346 et  49.335, theorie (99) [  48.907,  50.093 ]
variances   = 831.441 et 831.648, theorie (99) [ 817.933, 848.567 ]
co-variance =  -1.643,            theorie (99) [ -17.127,  17.127 ]

Avec :

esperances  =  49.784 et  49.364, theorie (99) [  48.907,  50.093 ]
variances   = 829.341 et 831.778, theorie (99) [ 817.933, 848.567 ]
co-variance =  -4.111,            theorie (99) [ -17.127,  17.127 ]

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#111 26-05-2016 17:42:59

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Avec le "C en ligne" http://www.tutorialspoint.com/computer_ … /try_c.php

esperances = 49.607 et 49.551 , theorie (99) [ 48.907, 50.093 ]
variances = 844.146 et 825.321 , theorie (99) [ 817.933, 848.567 ]
co-variance = -8.823 , theorie (99) [ -17.127, 17.127 ]

c'est exactement les mêmes résultats que "mon C" !
Et en activant la germination srand :

esperances = 49.193 et 49.498 , theorie (99) [ 48.907, 50.093 ]
variances = 822.255 et 825.116 , theorie (99) [ 817.933, 848.567 ]
co-variance = -0.395 , theorie (99) [ -17.127, 17.127 ]

ce qui paraît ok.

Dernière modification par leon1789 (26-05-2016 17:43:57)

Hors ligne

#112 26-05-2016 18:01:38

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

merci Yoshi pour tes résultats.

Mais tes deux premiers tableaux avec DevC++ sont identiques . un copier / coller trop rapide :)

Cela étant, on voit une espérance (ou moyenne) se trouver au delà de l'intervalle précisé...
Encore un motif de suspecter gravement ce sacré DevC++

Hors ligne

#113 26-05-2016 18:56:44

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Variable aléatoire at fonction rand()

Léon a écrit :

Encore un motif de suspecter gravement ce sacré DevC++

Je ne peux pas lire cela sans réagir
1- l'opération consiste à cumuler 16000 fois un nombre de moyenne 50. On dépasse la précision d'un float qui est de 7 chiffres significatifs.
2- l'écart-type se calcule avec les valeurs observées. Il n'y a pas à ma connaissance de formule théorique de valeur d'écart type. A moins que le 1/12 soit en relation, au signe près, avec la somme des nombres entiers ???
3- l'opération est faite avec 2 variables (x et y). On ne peut donc pas apprécier la dispersion.
4- la "co-variance nulle" n'est qu'une motion mathématique abstraite. Cette valeur, étant le rapport de deux variables réelles, elle ne peut être nulle que sur le papier.
5- il y a deux jours, ta formule de la variance était différente. Que s'est-il passé ?

Hors ligne

#114 26-05-2016 19:24:09

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Dlzlogic a écrit :
Léon a écrit :

Encore un motif de suspecter gravement ce sacré DevC++

Je ne peux pas lire cela sans réagir
1- l'opération consiste à cumuler 16000 fois un nombre de moyenne 50. On dépasse la précision d'un float qui est de 7 chiffres significatifs.

Tu veux qu'on remplace "float" par "double" ? Ca ne peut pas faire de mal, c'est vrai.

Mais vu que 50.229  > 50.093 à cause de la 3ième décimale, je pense que le passage ne jouera pas beaucoup, voire pas du tout.


Dlzlogic a écrit :

2- l'écart-type se calcule avec les valeurs observées. Il n'y a pas à ma connaissance de formule théorique de valeur d'écart type.

la formule est dans le programme :
pour la loi uniforme sur les éléments {0, ...., face-1}, la moyenne est \( \frac{face-1}{2} \) et l'écart-type est \(  \sqrt{\frac{face^2-1}{12} } \)
(confer mon message #95)

Cet écart-type théorique sert à calculer l'intervalle de fluctuation (à 99%) de la moyenne observée. Ainsi on peut voir si la moyenne observée est "douteuse" ou pas.

Dlzlogic a écrit :

3- l'opération est faite avec 2 variables (x et y). On ne peut donc pas apprécier la dispersion.

ces deux variables x et y prennent successivement 16000 valeurs !! Avec 16000 valeurs chacune, on peut apprécier leur dispersion (pour x et pour y).


Dlzlogic a écrit :

4- la "co-variance nulle" n'est qu'une motion mathématique abstraite.
Cette valeur, étant le rapport de deux variables réelles, elle ne peut être nulle que sur le papier.

Ben vois les résultats : les covariances obtenus sont tout de même assez proches de 0, en tout cas dans l'intervalle théorique (centré en 0).
Je ne comprends pas pourquoi la co-variance n'est qu'abstraite : elle est utilisée pour calcul le coefficient de corrélation :
coefficient de corrélation (X,Y) = co-variance(X,Y) / écart-type(X).écart-type(Y)
( confer http://www.jybaudot.fr/Correlations/r.html par exemple )
En quelque sorte, le coefficient de corrélation est la co-variance normalisée...

Dlzlogic a écrit :

5- il y a deux jours, ta formule de la variance était différente. Que s'est-il passé ?

Où ça, s'il te plait ?

(C'est possible qu'elle soit différente, si elle se réfère à une loi différente.)

Dernière modification par leon1789 (26-05-2016 19:34:49)

Hors ligne

#115 26-05-2016 19:42:48

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Dlzlogic a écrit :

1- l'opération consiste à cumuler 16000 fois un nombre de moyenne 50. On dépasse la précision d'un float qui est de 7 chiffres significatifs.

En effet, j'ai testé avec le "C en ligne", la variance change un peu, à partir de la quatrième décimale. Donc je modifie le programme en mettant double.
Merci pour cette remarque !

Hors ligne

#116 26-05-2016 20:02:46

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Variable aléatoire at fonction rand()

Salut,


Je ne vois pas deux tableaux identiques avec DevC++
Pour gagner du temps, je recommence.
Sans

esperances  =  49.346 et  50.229, theorie (99) [  48.907,  50.093 ]
variances   = 830.816 et 839.171, theorie (99) [ 817.933, 848.567 ]
co-variance =   4,613,            theorie (99) [ -17.127,  17.127 ]

Avec

esperances  =  49.525 et  49.551, theorie (99) [  48.907,  50.093 ]
variances   = 822.494 et 829.208, theorie (99) [ 817.933, 848.567 ]
co-variance =   0,608,            theorie (99) [ -17.127,  17.127 ]

Python

esperances =   49.3951  et 49.3979 -- theorie (99) [ 48.9067 ,50.0933 ]
variances  =  825.3868  et 832.4836 -- theorie (99) [ 817.9332 ,848.5668 ]
co-variance =   2.0939 --    theorie (99) [ -17.1273 ,17.1273 ]

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#117 26-05-2016 20:05:37

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Variable aléatoire at fonction rand()

L'histoire du float n'était qu'un détail technique.
Ici, c'est un forum de math. alors, ta remarque soigneusement mise entre parenthèse : "(C'est possible qu'elle soit différente, si elle se réfère à une loi différente.)" est de la politique, soit du mysticisme, soit une tentative d'intimidation, mais certainement pas des Maths.

Hors ligne

#118 26-05-2016 20:09:45

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

yoshi a écrit :

Sans

esperances  =  49.346 et  50.229, theorie (99) [  48.907,  50.093 ]
variances   = 830.816 et 839.171, theorie (99) [ 817.933, 848.567 ]
co-variance =   4,613,            theorie (99) [ -17.127,  17.127 ]

Avec

esperances  =  49.525 et  49.551, theorie (99) [  48.907,  50.093 ]
variances   = 822.494 et 829.208, theorie (99) [ 817.933, 848.567 ]
co-variance =   0,608,            theorie (99) [ -17.127,  17.127 ]

Là, les deux tableaux sont bien différents.
Le premier (germe fixé, par défaut) fait donc sortir une espérance très douteuse : 50.229 > 50.093 ,
mais pas le second (avec srand).

yoshi a écrit :

Python

esperances =   49.3951  et 49.3979 -- theorie (99) [ 48.9067 ,50.0933 ]
variances  =  825.3868  et 832.4836 -- theorie (99) [ 817.9332 ,848.5668 ]
co-variance =   2.0939 --    theorie (99) [ -17.1273 ,17.1273 ]

Là, rien à dire, ça colle.

Hors ligne

#119 26-05-2016 20:39:32

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Dlzlogic a écrit :

"(C'est possible qu'elle soit différente, si elle se réfère à une loi différente.)" est de la politique, soit du mysticisme, soit une tentative d'intimidation, mais certainement pas des Maths.

Toujours ton mépris, alors que.... bref... heureusement que je te connais et que je suis zen, le sujet m'intéresse.

Hier, je t'ai déjà donné un lien où tu peux voir que les lois habituellement utilisées ont des variances différentes :
le voici à nouveau http://math.univ-lyon1.fr/~gannaz/Cours/TablesStat.pdf
tu y verras diverses formules de variances, en fonction des lois auxquelles elles se rapportent.

J'imagine que tu parles de cette variance : 16000.p.(1-p) . En effet, ce n'est pas la même que dans ce nouveau programme, car 16000.p.(1-p) est la variance de la loi binomiale B(16000, p), utile dans les anciens programmes en début de discussion.

Alors que dans le nouveau programme présenté aujourd'hui, on utilise \( \frac{k^2-1}{12} \) car c'est la variance de la loi uniforme sur 0,1,...,k-1

Et oui, c'est bien des maths toutes ces petites choses. :)

Hors ligne

#120 27-05-2016 18:54:49

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 947

Re : Variable aléatoire at fonction rand()

Salut,

Voilà le code Python :

#!/usr/bin/python
# -*- coding: utf-8 -*-

from math import floor,sqrt
from numpy import random

fois,face=16000,100

m=(face-1)/2 # esperance de rand()%face
v=(face*face-1)/12 # variance de rand()%face
w=(face*face-4)*(face*face-1)/180 # variance de variance de rand()%face

esp_x,esp_y,var_x,var_y=0,0,0,0
co_var=0 ;
x,y=0,0
for i in range(fois):
    x = floor(random.uniform(0.0,1.0)*face)
    y = floor(random.uniform(0.0,1.0)*face)
    esp_x += x
    esp_y += y ;
    var_x += (x-m)*(x-m)
    var_y += (y-m)*(y-m)
    co_var += (x-m)*(y-m)

esp_x = esp_x/fois
esp_y = esp_y/fois
var_x = var_x/fois
var_y = var_y/fois  
co_var = co_var/fois

esp_min = m - 2.6*sqrt(v/fois)
esp_max = m + 2.6*sqrt(v/fois)

var_min = v - 2.6*sqrt(w/fois)
var_max = v + 2.6*sqrt(w/fois)
 
co_var_min = 0 - 2.6*sqrt(v*v/fois)
co_var_max = 0 + 2.6*sqrt(v*v/fois)

print("esperances =  %.4f" % esp_x," et %.4f " % esp_y, "-- theorie (99) [ %0.4f" % esp_min,",%0.4f" % esp_max,"]")
print("variances  =  %.4f" % var_x," et %.4f" % var_y, "-- theorie (99) [ %0.4f" % var_min,",%0.4f" % var_max,"]")
print("co-variance =   %.4f" % co_var,"--    theorie (99) [ %0.4f" % co_var_min, ",%0.4f" % co_var_max,"]")

Assez clair, à lire non ?
Dans un programme Python, c'est l'indentation qui détermine les blocs. Elle est conseillée à 4 espaces et une erreur est levée si on mélange indentation manuelle et par tabulations.
/ donne un quotient décimal : 5/4 = 1.25
// donne le quotient entier   : 5//4 = 1

Tout le monde dit qu'il est facilement interfaçable avec le C. Et d'ailleurs certaines routines sont écrites en C...

Dizlogic, en C peux-tu faire des des calculs en restant dans [tex]\mathbb{N}[/tex] avec des entiers de 2000 chiffres ?
Python, oui...
Peux-tu obtenir un nombre décimal avec 200, 1000, 2000... chiffres après la virgule ?
Peux-tu faire des calculs exacts de fractions (Add., Soustr., Mult. Div.) et obtenir la fraction résultat simplifiée?
Python, oui.

Essayez Python , c'est l'adopter... :-))
Son seul défaut sa lenteur extrême par rapport à C, C++ et d'autres...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#121 27-05-2016 21:16:50

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Variable aléatoire at fonction rand()

Bonsoir Yoshi,
Tes questions m'étonnent, mais je suis prêt à toutes les expériences.
D'abord, en C les variables dans N sont limitées à 2^32. donc, pas possible de produire des nombres à 200 chiffres. Par contre, je sais qu'il existe des bibliothèques qui le permettent, c'est une bonne occasion d'aller voir cela.
Cependant, si c'est un concours avec Python, là je ne vois pas vraiment l'intérêt.
Mon truc, c'est plutôt la CAD/DAO, mais je suis prêt à me diversifier.
Pour moi (ie d'après mes lectures), le Python est une alternative au Basic de mes jeunes années.
Ceci étant dit, je suis prêt à toutes les expériences. Dès demain, je me renseigne sur les grands nombres.
Bonne soirée.

PS. dès les premières lignes, il y a un truc que je ne comprends pas
m=(face-1)/2 # esperance de rand()%face
v=(face*face-1)/12 # variance de rand()%face
w=(face*face-4)*(face*face-1)/180 # variance de variance de rand()%face

1- l'espérance, c'est la moyenne. Voir postulat de la moyenne. Cette notion est acquise comme une évidence, mais sa démonstration demande plusieurs pages.
2- la variance de rand()%face ne peut certainement pas être une valeur connue : la variance se calcule à partit de valeurs observées.
3- variance de la variance, ça me rappelle ce que disait Lapalice "si une erreur était connue ce ne serait plus une erreur" (authentique).
Je veux bien faire tous les tests et essais que tu voudras, sauf si c'est pour rentrer dans le cycle élucubratoire de Léon. Sur un autre site http://forums.futura-sciences.com/mathe … oires.html à mon avis il a eu les bonnes réponses.
Pour être plus précis, il n'a pas compris ce que dit le TCL.
Donc, dans l'état, ton script ne représente pas grand-chose.

Je crois utile de préciser mes affirmations.
1- la notion d'écart-type n'a de justification mathématique que dans le cas de la loi normale.
2- on peut toujours calculer une erreur moyenne quadratique pour n'importe quelle loi, mais cela ne mérite le qualificatif d'écart type. Pour être plus précis, si j'appelle "écart probable" 2/3 de l'écart-type, alors, la moitié des résultats ont une différence à la moyenne égale ou inférieure à 1 ep, (25% + 16%)x2 inférieure à 2.ep etc. Ca c'est des mathématiques, pas la recopie de formules non comprises.
3- le résultat d'un générateur de nombres aléatoires doit être conforme à la loi normale. C'est comme ça.

Dernière modification par Dlzlogic (27-05-2016 21:54:48)

Hors ligne

#122 27-05-2016 22:02:41

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Dlzlogic a écrit :

PS. dès les premières lignes, il y a un truc que je ne comprends pas
m=(face-1)/2 # esperance de rand()%face
v=(face*face-1)/12 # variance de rand()%face
w=(face*face-4)*(face*face-1)/180 # variance de variance de rand()%face

1- l'espérance, c'est la moyenne. Voir postulat de la moyenne. Cette notion est acquise comme une évidence, mais sa démonstration demande plusieurs pages.

Quelle est la moyenne des valeurs 0,1,2,3..., face-1 ? Il te faut plusieurs pages pour dire que c'est (face-1)/2 ?

Dlzlogic a écrit :

2- la variance de rand()%face ne peut certainement pas être une valeur connue : la variance se calcule à partit de valeurs observées.

Une valeur inconnue de toi, oui, c'est ce que l'on constate depuis des pages...
Mais connaitre la variance de la loi uniforme, c'est la b.a.ba de la théorie des proba. Ouvre un livre de proba (un livre généraliste) et tu verras. ... ou sur le web, google : variance loi uniforme

Dlzlogic a écrit :

3- variance de la variance, ça me rappelle ce que disait Lapalice "si une erreur était connue ce ne serait plus une erreur" (authentique).
Je veux bien faire tous les tests et essais que tu voudras, sauf si c'est pour rentrer dans le cycle élucubratoire de Léon. Sur un autre site http://forums.futura-sciences.com/mathe … oires.html à mon avis il a eu les bonnes réponses.

En effet, des réponses comme 'ah oui léon, excuses moi, je me suis trompé, tu as raison" etc.  Deux ou trois fois...

En fait les forumeurs n'ont pas pris le temps (ils ont autre chose à faire) de rentrer dans les formules. Pas grave.

Dlzlogic a écrit :

Pour être plus précis, il n'a pas compris ce que dit le TCL.

Franchement, tu me fais marrer ! Mais là, tu finis par passer les bornes de la bien séance...
Il faut encore que je te rappelle quelques vérités flagrantes (déjà dites par pas mal de formeurs, ici même par exemple)
Tu ne connais strictement rien aux probas,
tu ne sais même pas ce qu'est une loi de probabilité, sa variance , etc.
tu n'as pas le niveau théorique d'un élève de terminale S (qui lui connait quelques lois élémentaires, comme la loi uniforme, la loi binomiale)
tu fais mumuse avec ton programme, des calculs de moyenne et d'écart-type sur n'importe quelle série, quelle qu'elle soit...
tu crois que toute expérience aléatoire suit la loi normale, car c'est le fameux TCL qui le dit, hein ?
apprends au moins ce qu'est une expérience aléatoire...
prends un bouquin de cours (un bouquin de proba généraliste) au moins une fois, avant de venir déverser des absurdités en rafale,
tu affirmes tout ce qui te passe par la tête par rapport à la théorie des probas, sans avoir le moindre sens critique sur ce que tu dis,
tu méprises les gens qui en savent 10 fois plus que toi (et c'est vite fait, ton niveau est quasi-nul en proba),
tu n'apprends absolument rien, tu rabâches toujours les mêmes énormités depuis des années,
tu déformes la réalité quand tu racontes tes "mémoires" (histoire de faire un peu de hors sujet, et provoquer les gens)
on a vu tout ça dans cette discussion...

Tant pis pour toi.

Hors ligne

#123 27-05-2016 22:08:13

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Variable aléatoire at fonction rand()

Bonsoir Léon,
Décidément tu changeras pas. A ton age, c'est dommage de ne pas être capable de se remettre en cause, de poser tes certitudes sur la table, voir les relations entre elles etc. Que puis-je dire de plus ?
Tu sais, en ce qui me concerne, j'ai fait mes preuves. Et toi ?, tu as construit quelque-chose ? montré ce que tu savais faire ? A lire tes réactions, j'ai vraiment des doutes.
Tu sais un petit détail simple, il y a deux jours la loi était binomiale, aujourd'hui, elle est uniforme. Qu'est-ce qui a changé ? Ton humeur ? Des nombres qui t'arrangent plus ?
J'ai cru comprendre que c'était ça mes maths modernes. BRAVO.

Hors ligne

#124 27-05-2016 22:09:45

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Dlzlogic a écrit :

Je crois utile de préciser mes affirmations.
1- la notion d'écart-type n'a de justification mathématique que dans le cas de la loi normale.

Quelle énorme connerie !! Prends un bouquin et lis, au lieu de rester ignorant à ce point...

Dlzlogic a écrit :

2- on peut toujours calculer une erreur moyenne quadratique pour n'importe quelle loi,

Faux... Il y a des lois qui n'ont même pas d'espérance... alors tu seras mal barré pour calculer une erreur moyenne quadratique !

Dlzlogic a écrit :

Pour être plus précis, si j'appelle "écart probable" 2/3 de l'écart-type, alors, la moitié des résultats ont une différence à la moyenne égale ou inférieure à 1 ep, (25% + 16%)x2 inférieure à 2.ep etc. Ca c'est des mathématiques, pas la recopie de formules non comprises.

C'est faux en général ! Pour que cela soit vrai, il faut une hypothèse que tu n'as pas comprise et que tu as oubliée de recopier...

Dlzlogic a écrit :

3- le résultat d'un générateur de nombres aléatoires doit être conforme à la loi normale.

C'est quoi la loi normale pour toi ??? on se demande...

Dernière modification par leon1789 (27-05-2016 22:27:30)

Hors ligne

#125 27-05-2016 22:29:11

leon1789
Membre
Inscription : 27-08-2015
Messages : 1 203

Re : Variable aléatoire at fonction rand()

Dlzlogic a écrit :

Décidément tu changeras pas.

J'étais zen pendant des pages, mais comme tu es là pour balancer des conneries sur les gens (à défaut de faire des maths), il faut bien te mettre les points sur les i

Dlzlogic a écrit :

Que puis-je dire de plus ?

rien ! tu as assez dit de conneries mathématiques ici, tu as assez méprisé toutes personnes dont tu parles...

Dlzlogic a écrit :

j'ai fait mes preuves.

en tant que mathématicien ? ooooohhhhh, je rigole.
Retourne donc là bas où tu as fait tes preuves, vu qu'ici, 90% de ce que tu racontes sont des âneries grosses comme toi.

Dlzlogic a écrit :

Et toi ?, tu as construit quelque-chose ? montré ce que tu savais faire ?

Non, moi je fais des maths, c'est tout... comment t'expliquer ce que c'est ?

Dlzlogic a écrit :

Tu sais un petit détail simple, il y a deux jours la loi était binomiale, aujourd'hui, elle est uniforme. Qu'est-ce qui a changé ?

Tout simplement , on ne calcule pas la même chose aujourd'hui. Tu n'as rien compris au programme que j'ai présenté...

Dlzlogic a écrit :

J'ai cru comprendre que c'était ça mes maths modernes. BRAVO.

Merci, j'étais content de te montrer des formules de proba, des formules simples que yoshi a eu le courage de vérifier en machine.
Toi, tu n'es pas là pour ça, tu es là pour faire croire à ta compréhension de la théorie des probas, spécialité du grand professionnel que tu es...

J'attends tes formules... et pas seulement ton blabla impertinent habituel.

Hors ligne

Pied de page des forums