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

sofuBolivie -  
billx09 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   6
 
Ceci devrait marcher aussi :


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

0