Fonction ran
Discussion fermée
Affichage des résultats 1 à 15 sur 15

Fonction ran



  1. #1
    invitea351bc7a

    Fonction ran


    ------

    Bonjour,
    je veux vraiment les caractéristiques de la fonction ran ( je dit bien ran et pas rand) qui génère les nombres aléatoires au langage Fortran
    SVP c'est important

    -----

  2. #2
    invite63e767fa


  3. #3
    Dlzlogic

    Re : fonction ran

    Bonjour,
    L'utilisation de rand avec des langages comme Scilab ou Matlab donne des résultats inattendus et différents de ceux fournis par les langages classiques, tableurs etc.
    C'est un peu hors sujet, mais nécessaire à rappeler.
    Comme je n'ai pas vu tous les détails de l'utilisation de ran(), le doute peut subsister.
    Si il s'agit juste d'une transformation de la valeur renvoyée par rand() en flottant entre telle limites, alors tout va bien.

  4. #4
    invite63e767fa

    Re : fonction ran

    @ gazelle2012
    tu peux faire un test comparatif avec RAN et RAND. Je parie qu'ils donneront la même liste de nombres (avec le même seed, bien évidemment)
    http://software.intel.com/sites/prod...ABCAFD8922.htm

  5. A voir en vidéo sur Futura
  6. #5
    invitea351bc7a

    Re : fonction ran

    un jour il y avait quelqu'un qui ma dit que pour l'utilisation de ran (pour avoir une liste vraiment aléatoires) il faut utiliser un germe grand( plusieurs chiffres) et le premier chiffre sera impaire ,je sais pas , moi c ca qui me manque( ces notations ou ces astuces), aussi je suis entrain de préparer un petit truc là ou je vais utiliser la fonction ran comme générateur , mais au début je doit la définirai et donner ces caractéristiques avant de mettre les résultats . Aider moi SVP

  7. #6
    Dlzlogic

    Re : fonction ran

    Bon, mon conseil : utilisez rand() de base.
    Cette fonction retourne un nombre aléatoire entre 0 et 2^n.
    En C, n=32, ça fait déjà 4.10^9. J'ai cru voir qu'en Fortran n valait 64 ou 128.

    Il y a le problème de la graine.
    Etant donné le principe de rand, si on ne lui dit rien, à chaque début d'exécution, il recommencera au même endroit, donc, la séquence des nombres aléatoires sera toujours la même.
    Il existe une fonction pour initialiser rand.
    Si on VEUX avoir toujours la même suite, alors on l'initialise toujours avec la même valeur, c'est ce dont parlait JJacquelin à propos de SEED.
    Dans le cas général, au contraire, on cherche à obtenir des suites différentes d'une exécution à l'autre. En ce cas, la méthode généralement utilisée est d'appeler l'heure, qui par définition est toujours différente d'une fois à l'autre.
    Si vous utilisez toujours la même graine (que vous appelez germe), que le nombre soit grand ou petit, pair ou impair vous obtiendrez toujours la même suite.
    Si vous voulez un nombre flottant compris entre 0 et 1, il suffit de diviser le résultat par 2^n (n=32, 64 ou 128 suivant la doc).
    Le fait d'utiliser RAN au lieu de RAND ne vous apportera rien.

  8. #7
    invite44dd937f

    Re : Fonction ran

    La référence, en terme de générateur de nombres aléatoires, est l'algorithme "Mersenne Twister", qui a une périodicité très grande. Cette méthode est notamment utilisée en applications financières.

    http://fr.wikipedia.org/wiki/Mersenne_Twister

  9. #8
    invite179e6258

    Re : Fonction ran

    j'aime bien le générateur de Tausworthe. Il a de bonnes propriétés si on veut des vecteurs (c'est-à-dire des suites finies de valeurs successives). Je l'ai programmé en C. Puisqu'on a des fonctions qui permettent de manipuler les registres à décalage, c'est plus rapide qu'en fortran (il y a peut-être ces fonctions maintenant dans fortran?)

  10. #9
    Dlzlogic

    Re : Fonction ran

    Bonjour,
    Ca m'intéresserait de voir le code.
    La fonction rand de mon compilateur est pas mal (des quantités de tests qui l'ont vérifié) mais il est toujours bon de s'informer.
    Bonne soirée.

  11. #10
    feanorel

    Re : Fonction ran

    Bonjour,
    L'utilisation de rand avec des langages comme Scilab ou Matlab donne des résultats inattendus et différents de ceux fournis par les langages classiques, tableurs etc.
    C'est un peu hors sujet, mais nécessaire à rappeler.
    Rappelons simplement que soit rand renvoie un entier entre 1 et sa période, soit il renvoie un réel (on divise simplement par la période) entre 0 et 1 de manière uniforme. Scilab et matlab ne sont pas différent des autres langages.

    Cette fonction retourne un nombre aléatoire entre 0 et 2^n.
    Moi je lis la doc http://gcc.gnu.org/onlinedocs/gfortran/RAND.html#RAND qui dis que le rand de gfortran renvoie un réel entre 0 et 1...

  12. #11
    Dlzlogic

    Re : Fonction ran

    Bonjour,
    Les définition habituelles de la fonction rand, c'est "retourne un nombre pseudo-aléatoire".
    Il y a 3 termes importants
    "nombre" : ce peut être un nombre compris entre 0 et RANDMAX, par exemple 2^32, ou ça peur être un nombre compris entre 0 et 1, ou toute autre bornes souhaitées, suivant l'imagination de l'auteur du langage.

    "pseudo" : cela signifie que la séquence est toujours la même. Pour éviter ce grave inconvénient, il a été introduit la notion de "graine" ou "germe". C'est une valeur qui initialise l'endroit où la séquence commence. L'utilisation de l'heure système me parait être la meilleure méthode.

    "aléatoire" : là c'est un peu plus compliqué. Il est très facile de vérifier la répartition des nombres sortis par un tel générateur. Ceux d'Excel et de mon compilateur (Borland) donnent une répartition conforme à ce qu'on peut attendre. J'ai testé un autre générateur (de mémoire genrand ). Il semble avoir été étudié pour contourner ce phénomène de séquence répétitive. Par ailleurs, à chaque tirage, il donne une répartition "parfaite".
    Le générateur de Scilab autorise plusieurs options, c'est là que le terme "aléatoire" n'a plus son vrai sens. En particulier, ce générateur utilisé, sans préciser d'option, c'est à dire par défaut, donne des résultats qui ne sont pas ceux qu'on connait en matière de hasard. Je n'ai pas Matlab, donc, j'ai pas pu tester qui que ce soit.

    PS, je t'avais pas reconnu tout de suite. Le comique de la situation c'est que c'est toi qui a mis le doigt sur le problème.
    Dernière modification par Dlzlogic ; 10/08/2013 à 12h22.

  13. #12
    feanorel

    Re : Fonction ran

    Le générateur de Scilab autorise plusieurs options, c'est là que le terme "aléatoire" n'a plus son vrai sens. En particulier, ce générateur utilisé, sans préciser d'option, c'est à dire par défaut, donne des résultats qui ne sont pas ceux qu'on connait en matière de hasard.
    Et qui à part toi pense cela ? En tout cas pas les chercheurs en proba, ou en optimisation stochastique que je côtoie par exemple... Quelqu'un d'autre ici par exemple pour confirmer que les résultats ne sont pas "ceux que l'on connaît en matière de hasard" ? Comme souvent ton avis sur l'aléatoire est différents de celui de tout ceux qui ont étudié et utilisé les probas...

    Alors ramenons un peu de vérité :
    - Une variable aléatoire suis une loi
    - il existe plusieurs loi classique utilisées un peu partout pour diverses modélisations, simulations etc...
    - les plus courantes sont : la loi uniforme et la loi normale, mais on peut aussi citer la loi exponentielle, du chi², de poisson, binomiale, géométrique, de Cauchy, etc...
    - par défaut un générateur de nombre pseudo aléatoire produit une suite de nombre au pptés statistiques très proche d'une suite i.i.d de loi uniforme. Et ce pour tout les générateurs de nombre aléatoire connu. Dans ce que j'exposais précédemment cela peut être uniforme sur [0,1] ou sur un certain nombre d'entier.
    - Pourquoi ? Parce qu'à partir d'une loi uniforme on peut simuler toutes les autres loi si on connait leur fonction de répartition (méthode du rejet typiquement).
    - Il n'empêche que les simulateurs évolués proposent de simuler d'autres lois.

  14. #13
    Dlzlogic

    Re : Fonction ran

    Les preuves, par des simulations, que j'ai apporté n'ont servi à rien.
    Quant aux documents cités "Ah c'est un physicien, il est normal qu'il défende son domaine" (par exemple)
    Je n'ai rien à ajouter.

  15. #14
    feanorel

    Re : Fonction ran

    Faut voir ta notion de "preuve"... Elle est différentes de celle utilisées par l'ensemble des gens qui ont fait des maths jusqu'en TS par exemple...

  16. #15
    Médiat

    Re : Fonction ran

    Fermé, comme d'habitude à cause de HS de Dlzlogic (le sujet est exclusivement celui de la fonction ran du fortran !)
    Médiat, pour la modération
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

Discussions similaires

  1. la sortie d'une fonction soit un paramétre d'entrèe de la même fonction
    Par inviteb02396e9 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 28/07/2013, 20h25
  2. Fonction carré, fonction racine carrée, symétrie
    Par invitebc6ce6b3 dans le forum Mathématiques du collège et du lycée
    Réponses: 33
    Dernier message: 17/11/2012, 12h09
  3. Dérivée d'une fonction composée avec racine carrée d'une fonction au dénominateur
    Par schrom007 dans le forum Mathématiques du supérieur
    Réponses: 11
    Dernier message: 08/08/2012, 17h43
  4. Maple, fonction Odeplot comment obtenir une couleur en fonction du temps ?
    Par invite8810fee1 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 28/11/2010, 21h05
  5. Comment insérer une fonction Matlab dans les paramètres d'entrée d'une autre fonction ??
    Par inviteac36b108 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 04/01/2010, 07h16