Comment éviter deux même valeurs sur une même ligne

Fermé
sofuBolivie - 13 mars 2013 à 18:51
billx09 Messages postés 23 Date d'inscription lundi 18 mars 2013 Statut Membre Dernière intervention 26 mars 2013 - 18 mars 2013 à 21:12
Bonjour,

J'ai une matrice R de 30 lignes 5 colones, de chiffres tirés au hasard entre 1 et 30.
Je souhaiterai ne pas avoir de répétition de chiffres dans mes lignes.
C'est à dire sur une même ligne, je ne veux pas avoir deux fois le même chiffre.
donc j'ai fait une boucle, et j'ai dit si j'ai deux fois la même valeur sur la même ligne, alors je veux une autre valeur entre 1 et 30.
voici mon code qui ne marche pas encore,

R = unidrnd (30,30,5);
for k = 1:30;
for i=1:5;
for j=1:5;
j ~= i;

if R(k,i) == R(k,j);
R(k,i)= unidrnd (30,1,5);
else
return
end
end
end
end

Si vous avez des idées.
Merci beaucoup
sophie

A voir également:

2 réponses

Krys_06 Messages postés 22 Date d'inscription jeudi 7 mars 2013 Statut Membre Dernière intervention 29 mars 2013
Modifié par Krys_06 le 18/03/2013 à 13:06
A mon avis, le plus simple est de faire un vecteur de 1 à 30, de tirer une des valeurs au pif et de l'enlever de ton veteur et ainsi de suite.


genre pour une ligne:

values = 1:30;
for n=30:-1:26
[...]
idx = randi(n,1);
val = values(idx);
values(idx) = [];
[...]
end

C'est pas très esthétique mais ça doit marcher.
0
billx09 Messages postés 23 Date d'inscription lundi 18 mars 2013 Statut Membre Dernière intervention 26 mars 2013 6
18 mars 2013 à 21:12
Ceci devrait marcher aussi :


R = zeros(30,5);
for i=1:30
        R(i,:) = randperm(30,5)
end

0