IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

loi uniforme utiliser en fortan


Sujet :

Fortran

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    USTHB
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : USTHB

    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 39
    Points
    39
    Par défaut loi uniforme utiliser en fortan
    Bonsoir à tous,

    je voudrais faire un tirage d'un nombre aléatoire "p" dans la loi uniforme, mais je

    ne sais pas si elle existe une fonction bien définit ou un programme qui fait ça!!,

    Merci à votre réponse.

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2013
    Messages : 35
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    Les deux indications suivantes pourront vous être utile :

    1 - Fortran 9x dispose d'un générateur de nombres pseudo-aléatoires que l'on appelle via la subroutine random_number. Lorsque on lui passe en argument un flottant x, elle retourne un flottant tiré aléatoirement selon une loi uniforme sur l'intervalle [0, 1[ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    real :: x
    call random_number(x)   ! x flottant aléatoire avec : 0 <= x < 1 
    ...
    Vous trouverez plus d'informations sur cette subroutine intrinsèque ici

    2. Si l'on souhaite tiré un nombre aléatoire p selon une loi uniforme sur un intervalle de type a <= p <b, il suffit de mettre à l'échelle de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    real, parameter :: a = -10., b = 10.
    real :: x, p
    call random_number(x)
    p = x*a + (1. - x)*b
    ...
    Finalement, si vous connaissez a-priori un intervalle dans lequel doit se trouver le nombre que vous voulez générer votre problème est résolu.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Tu peux aussi aller voir du côté de http://jblevins.org/mirror/amiller/#random

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    USTHB
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : USTHB

    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 39
    Points
    39
    Par défaut random
    salut,

    merci à tous, j'ai réfléchit de faire ça mais je n'ai savait pas que la fonction random utilise la loi uniforme,

    cordialement

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    USTHB
    Inscrit en
    Mai 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : USTHB

    Informations forums :
    Inscription : Mai 2010
    Messages : 35
    Points : 39
    Points
    39
    Par défaut Random
    Bonjour,
    j'ai exécuté la fonction random 5 fois dans un algorithme et à chaque fois elle me donne les meme résultats dans cet ordre :
    0.98 - 0.69 - 0.27 - 0.66 - 0.80
    normalement qu'elle va pas me donne ces résultats à chaque fois !!

    cordialement

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 57
    Points : 91
    Points
    91
    Par défaut
    Ce n'est pas forcément étonnant; le générateur aléatoire fournit une série de valeurs qui dépendent d'une valeur initiale.

    Cette valeur initiale, ou "graine", va donc conditionner l'ensemble de la série. A partir d'une même valeur initiale, on obtient toujours la même série.

    Il faut donc, avant la première utilisation, utiliser la routine d'initialisation (qui s'appelle RANDOM_SEED ), en lui fournissant une valeur initiale différente à chaque fois (si on souhaite des tirages différents).

    J'aime bien utiliser la date & l'heure pour générer la graine. Un exemple peut être trouvé là:

    http://gcc.gnu.org/onlinedocs/gfortr..._005fSEED.html

    Pas testé personnellement, d'ailleurs, mais c'est l'idée

    Bon courage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec loi uniforme discret
    Par hamzawhy dans le forum Général Java
    Réponses: 3
    Dernier message: 03/10/2013, 09h02
  2. Tirage de nombre selon une loi uniforme sans remise
    Par celia89 dans le forum SAS STAT
    Réponses: 2
    Dernier message: 16/02/2012, 16h50
  3. Réponses: 3
    Dernier message: 10/12/2011, 21h58
  4. Passer d'une loi Uniforme à une loi Normale
    Par chloe28 dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/05/2011, 00h16
  5. changement de l'intervalle pour une loi uniforme
    Par djocin dans le forum Fortran
    Réponses: 3
    Dernier message: 22/06/2009, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo