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

MATLAB Discussion :

générer des nombres aleatoires efficacement dans une boucle for


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut générer des nombres aleatoires efficacement dans une boucle for
    Bonjour,

    Je dois générer des nombres aléatoires dans une boucle for différents pour chaque itération. Le soucis c'est que je prévois au moins 6.10^10 itérations. Générer un nombre aléatoire à chaque itération prend énormément de temps. J'avais donc prévu de générer ces nombres aléatoires dans des matrices avant la boucle, et à chaque itération j'appelle un élément de la matrice. Le soucis c'est que cette méthode utilise beaucoup de mémoire et on arrive vite à saturation
    Quelle est la meilleure méthode pour réaliser cette tâche? Je pensais générer des matrices moins longues et par exemple toutes les 10^5 itérations, générer une autre matrice, mais ça me parait pas très propre, est ce qu'il y a mieux?

    Merci d'avance!

    Bonne journée
    Fabien

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 318
    Points : 52 958
    Points
    52 958
    Par défaut
    C'est effectivement un équilibre à trouver entre la puissance de la machine et la quantité de mémoire vive (RAM) disponible.

    Pour créer 6.1010 valeurs avec rand, il faut 6E10*8/1024/1024/1024 = 447 Go de mémoire (RAM)

    Il serait plus réaliste de partir sur environ 108 éléments au maximum : 1E8*8/1024/1024 = 763 Mo

    Voir la FAQ : Comment déterminer approximativement la quantité de mémoire nécessaire pour le stockage d'une variable ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 37
    Points : 33
    Points
    33
    Par défaut
    Dacc merci, du coup c'est cool car j'utilise beaucoup moins de mémoire et ça ralentit pas trop le temps de calcul!

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 352
    Points
    352
    Par défaut
    pour le coup
    est-ce que c'est pas typiquement le genre de bou de code a faire dans un mex en c++?
    pas très compliqué a faire et tu gagneras beaucoup sur la boucle et l'appel du rand...
    tu alloues la matrice de nombre alleatoire par un call a l'api matlab et le reste tu le fais en C++

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/01/2013, 12h07
  2. Réponses: 1
    Dernier message: 19/05/2011, 13h48
  3. Réponses: 1
    Dernier message: 29/12/2010, 16h10
  4. [Batch] Modification des paramètres d'entrée dans une boucle FOR
    Par reppier dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 15/06/2009, 16h23
  5. declarer des functions de boutons dans une boucle for
    Par superleon dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 06/06/2009, 13h24

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