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 :

Tirage sans remise


Sujet :

MATLAB

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par d�faut Tirage sans remise
    Bonjour,
    J'aimerais savoir comment effectuer un tirage sans remise.
    Par exemple:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     a=   [1   2   3   4   5
    6   7   8   9   10]
    Dans cette matrice, je voudrais pouvoir selectionner un des �l�ments au hasard qui lors d'un deuxi�me tirage au hasard ne pourrait pas �tre s�lectionner.
    Je pensais que la commande 1:a marcherait mais je viens de d�couvrir que non.

    Merci.

  2. #2
    Expert confirm�
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par d�faut
    Pour la s�lection "au hasard" je pense qu'il faut que tu regardes du c�t� de la fonction RAND, � adapter � ton probl�me �videmment.
    Apr�s pour le 2�me tirage, il faut enlever l'�l�ment d�j� pris au 1er tirage.
    As-tu vraiment besoin que ce soit une matrice ou peux-tu la transformer en vecteur (car sinon on ne peut enlever simplement un �l�ment) ?

  3. #3
    Membre �m�rite

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2007
    Messages
    979
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 979
    Par d�faut
    il y a la fonction randperm

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    >> randperm(6)
    ans =
         2     4     3     6     5     1 
    >>
    C'est une permutation des 1:6 .

    Pour ton cas, un truc du style :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    A =  [1   2   3   4   5 ; 6   7   8   9   10];
     
    % Generer les indices
    r = randperm(size(A,1)*size(A,2));
     
    % Prendre le i-eme
     
    tempo = A(r(i)); % indexage linéaire ici 
     
    % Plus encore : 
    Aperm = A(r);  % Aperm est un vecteur qui contiens tous les elements de la matrice A permuté.
     
    %  ... utilise la fonction  'reshape' si tu veux retrouver un matric a partir de  Aperm

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par d�faut
    Non, pas du tout, �a peut �tre un vecteur mais je ne sais pas vraiment comment les g�rer, j'ai toujours utiliser des matrices.

  5. #5
    R�dacteur/Mod�rateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance m�catronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par d�faut
    Citation Envoy� par mr_samurai Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    % Generer les indices
    r = randperm(size(A,1)*size(A,2));
    Il est plus judicieux d'utiliser la fonction NUMEL ici :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    % Generer les indices
    r = randperm(numel(A));
    Note : NUMEL �vite aussi l'emploi de PROD(SIZE(A))

  6. #6
    Membre �m�rite

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2007
    Messages
    979
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 979
    Par d�faut
    j'avais chang� juste apres ... je teste mes codes avant de les poster.

    bien pratique celle la .

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par d�faut
    Utiliser le randperm est une bonne id�e pour g�n�rer le hasard. Il suffirait ensuite de choisir le premier chiffre lors du tirage, le deuxi�me lors du deuxi�me tirage et ainsi de suite. Est ce possible d'int�grer cela dans une boucle car j'ai 60 tirages?
    Cela m'�viterais de devoir proc�der ainsi: "premier tirage, essai, deuxi�me tirage, essai..." ce qui ferait un programme fastidieux a �crire.

  8. #8
    Membre �m�rite

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2007
    Messages
    979
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2007
    Messages : 979
    Par d�faut
    60 tirages ?

    60 experiences de tirage (1) , ou tu tire 60 element de la matrice (2)?

    pour (1) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    tirage = 0;
     
    while tirage < 60 
         r = randperm(numel(A));
         % corps de l'expérience
         % extraction resultats
         tirage = tirage + 1;
    end
    pour (2) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    % ....
    r = randperm(numel(A));
     
    for i=1:60  % /!\ ta matrice A doit contenir au moins 60 elements
         tirage = A(r(i));
         % corps de l'expérience
         % extraction resultats
    end

  9. #9
    Membre �m�rite

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    i=randperm(numel(a));
    result=a(i)
    result est un vecteur contenant tous tes tirages!
    a(1) le premier tirage, a(2) le deuxi�me...

    Ce n'est pas ce que tu attends?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par d�faut
    Je vais tenter ta deuxi�me proposition, elle m'a l'air pas mal du tout.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Boucle tirage al�atoire sans remise
    Par Jennn dans le forum Macro
    R�ponses: 17
    Dernier message: 12/07/2012, 09h17
  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. Perl script al�atoire d'un hash: tirage sans remise
    Par Sethenssen dans le forum Langage
    R�ponses: 11
    Dernier message: 04/08/2011, 10h18
  4. faire un tirage sans remise
    Par mgrizzly dans le forum Macros et VBA Excel
    R�ponses: 26
    Dernier message: 19/05/2009, 11h38
  5. tirage sans remise
    Par ouioui_cmoi dans le forum Macros et VBA Excel
    R�ponses: 9
    Dernier message: 12/03/2008, 11h44

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