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

Turbo Pascal Discussion :

[TP] Matrice générée aléatoirement


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de magicstar
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 136
    Par défaut [TP] Matrice générée aléatoirement
    Bonjour;
    je doit créer une matrice(3par3) qui contient des nombres réels générés aléatoirement;de tel sorte que la somme des éléments de chaque ligne (résp colonne) est égale à 1.
    PLEASE
    THANK'S A LOT

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hi,
    Citation Envoyé par magicstar
    Bonjour;
    je doit créer une matrice(3par3) qui contient des nombres réels générés aléatoirement;de tel sorte que la somme des éléments de chaque ligne (résp colonne) est égale à 1.
    PLEASE
    THANK'S A LOT
    Pout moi, ton énoncé contient une erreur conceptuelle qui le rend insoluble tel quel.

    Car l'exigence sur la somme des valeurs sur les lignes et colonnes est absolument incompatible avec "des nombres réels générés aléatoirement".

    Si on veut le faire effectivement avec des valeurs aléatoires, alors le temps de trouver une solution, et l'Univers aura sérieusement vieilli.

  3. #3
    Membre expérimenté Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Par défaut
    Bonsoir,
    Pour moi ça a l’aire réalisable,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Traitons la première ligne :
        Pour la première case, c1 := random(101) ;
        Pour la deuxième case, si c1 est différent de 100 alors c2 := random(101-c1) ;
            sinon c2 := 0
        pour la troisième case si c1+c2 différent 100 alors c3 := 100-(c1+c2) ;
            sinon c3 := 0 ;
    Traitons la deuxième ligne :
        première case : si c1 est différent de 100 alors c4 := random(101-c1)
            sinon c4 := 0
        ...
        ...
    ainsi de suite pour les autres cases.
    Remarque: Sur mon algo la somme des cases doit donner 100.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Ho,
    Citation Envoyé par Ultima
    Bonsoir,
    Pour moi ça a l’aire réalisable,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Traitons la première ligne :
        Pour la première case, c1 := random(101) ;
        Pour la deuxième case, si c1 est différent de 100 alors c2 := random(101-c1) ;
            sinon c2 := 0
        pour la troisième case si c1+c2 différent 100 alors c3 := 101-(c1+c2) ;
            sinon c3 := 0 ;
    Traitons la deuxième ligne :
        première case : si c1 est différent de 100 alors c4 := random(101-c1)
            sinon c4 := 0
        ...
        ...
    ainsi de suite pour les autres cases.
    Remarque: Sur mon algo la somme des cases doit donner 100.
    Oui, en le prenant comme ça, ça peut aller, mais ce n'est pas aussi simple que ce que tu fais, il faut également tenir compte des sommes dans les colonnes. Si on prend ton principe de ne tirer que quelques valeurs au hasard, c'est quand même soluble, sans trop de difficulté.

    Par contre, dans l'énoncé, je lis "qui contient des nombres réels générés aléatoirement", pas "dont une partie sont des nombres réels générés aléatoirement".

    Problème supplémentaire, il y est question de réels, pas d'entiers. Gare aux problèmes de tests et erreurs de calculs avec les réels.

  5. #5
    Membre expérimenté Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Par défaut
    Bonsoir,
    Citation Envoyé par droggo
    Par contre, je lis "qui contient des nombres réels générés aléatoirement", pas "dont une partie sont des nombres réels générés aléatoirement".

    Et aussi, il y est question de réels, pas d'entiers. Gare aux problèmes de tests et erreurs de calculs avec les réels.
    Un nombre généré à partir d’un nombre généré aléatoirement est lui-même aléatoire.
    c1 := random(x),
    c2 := f(c1) implique que c2 est lui-même aléatoire, non ?

    n/100 est un nombre du type REAL.
    J’ai fait mon exemple avec 100, alors il suffit de diviser par 100.

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Ho,
    Citation Envoyé par Ultima
    Un nombre généré à partir d’un nombre généré aléatoirement est lui-même aléatoire.
    c1 := random(x),
    c2 := f(c1) implique que c2 est lui-même aléatoire, non ?
    Ca dépend de la fonction.

    Dans ta méthode, ce sont des if..., et tu forces des valeurs : ce n'est pas aléatoire.

    En fait, dans ta méthode, seul le 1er nombre tiré peut être vraiment aléatoire, dès le second, il y a une condition à respecter : ce n'est plus aléatoire.

    Citation Envoyé par Ultima
    n/100 est un nombre du type REAL.
    J’ai fait mon exemple avec 100, alors il suffit de diviser par 100.
    Le problème avec les réels, c'est la repésentation par la machine, qui fait que seule une toute petite partie des valeurs possibles dans l'étendue offerte par les types les gérant a une représentation exacte (par exemple, 0.1 n'est pas représenté exactement, car il n'y a pas de représentation binaire permettant de le faire).

    De ce fait, les tests de comparaison échoue souvent, parce que une même valeur numériquement unique, (c'est à dire avec un calcul "manuel") sera probablement représentée par l'ordinateur de 2 manières différentes si les calculs y menant sont différents.

    Il faut prendre beaucoup de précautions pour calculer avec des réels.

    Reprenons avec ta méthode : il faut être concient qu'elle va conduire très souvent à une impasse, qui se révélera généralement en vérifiant la valeur pour la dernière case, qui nécessitera 2 valeurs différentes pour rendre la ligne ou la colonne valides, mais parfois aussi avant.

    Au-delà de ça, je suis étonné par l'énoncé, car ce genre de "carré magique" se remplit généralement avec des entiers (strictement positifs).

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

Discussions similaires

  1. Une fonction qui génère des matrices aléatoires
    Par deblo16 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 26/10/2012, 01h31
  2. VBA: Matrice réorganisée aléatoirement, en Random
    Par vatfer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/08/2010, 00h02
  3. Comment remplir une matrice aléatoirement ?
    Par Hamza dans le forum Langage
    Réponses: 21
    Dernier message: 08/12/2007, 19h59
  4. 32 images générées aléatoirement (sans les voir)
    Par jhonnybegood dans le forum Général VBA
    Réponses: 10
    Dernier message: 12/03/2007, 13h03
  5. [matrice aléatoire]
    Par wjean dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 08/05/2005, 15h24

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