Téléchargement
illégal
Posez votre question Signaler

Fortran: Générateur de nombres aléatoires [Résolu]

Mangeurdespin - Dernière réponse le 8 mars 2009 à 18:51
Bonjour,
Je suis étudiant en physique et je commence le fortran depuis quelques mois. Je suis actuellement sur une simulation qui me permettrais de trouver l'énergie d'un système en fonction du nombres de spins qui "changent" dans un réseau initial.
Bien sûr, le cours actuel consiste à nous mettre la méthode Monté-Carlo en tête, seulement j'ai quelques problèmes avec les premières parties du programme.
Le problème: Je doit générer une liste de variables aléatoires uniformes, et une liste de variables aléatoires gaussiennes normalisées. Seulement quand je compile mon programme j'obtient TOUJOURS la même liste de chiffres quelque soit la situation (gausienne ou uniforme).
Etant débutant en fortran, j'aurais aimé savoir si le fait que le générateur se "bloque" sur une liste de chiffres est dû à une raison particulière du codage (genre les initialisation de variables, les noms des variables utilisées...)
Toute suggestion sera la bienvenue, du moment qu'elle soit expliquée un tout petit peu.
Merci d'avance!
Lire la suite 

Fortran: Générateur de nombres aléatoires »

1 réponses
Réponse
+3
moins plus
Salut
Effectivement, la séquence de nombres générée est toujours la même. Ce qui m'avait paru bizarre à l'époque, c'est que sous Unix j'avais aucun souci, mais le jour où on est passé à Linux, ben la séquence était toujours la même. Peut-être que le compilateur était différent... va savoir...
T'as des explications ici :
http://infohost.nmt.edu/tcc/help/lang/fortran/random.html
http://infohost.nmt.edu/tcc/help/lang/fortran/seed.html
Donc pour avoir une séquence différente, faut appeler la fonction rand() avant la fonction random avec un argument différent à chaque fois.
Si tu veux vraiment un truc "aléatoire" à chaque exécution du code, tu peux faire comme ils le suggèrent sur la page (de toute façon, à part comme ça, je vois pas trop comment on pourrait faire d'autre... :-D), c'est-à-dire appeler rand() avec un argument qui dépend du temps. C'est ce que j'avais fait aussi...
Bonne soirée
Ajouter un commentaire
Ce document intitulé « Fortran: Générateur de nombres aléatoires » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?