Générer n nombres pseudo-aléatoires en matlab

Fermé
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011 - Modifié par ozagi le 13/03/2011 à 21:50
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011 - 10 mai 2011 à 11:30
Bonjour,
je dois créer une fonction matlab permettant de générer n nombres pseudo-aléatoires en appliquant une congruence linéaire avec les paramètres a,c, m et x0
la forme général de es générateurs est
X(k+1) = (a X(k) + c) mod m
quelqu'un peut m'aider de faire ça, merci d'avance



A voir également:

1 réponse

khunlun Messages postés 110 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 17 avril 2012 27
14 mars 2011 à 08:50
Bonjour,

Tu peux faire quelque chose comme suit :

X = zeros(n,1);
X(1,1) = x0
for k = 2 : n
X(k+1,1) = mod(a*X(k,1) + c,m )
end

Tu aura un vecteur colonne contenant les valeurs de X.

Mais je sais pas si j'ai bien saisi la question.
Ca à l'air d'être un piège. ^^

Bonne journée
0
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011
Modifié par ozagi le 14/03/2011 à 10:21
Bonjour,

Excusez moi, j'ai pas bien compris le code que vous avez écrit, vous pouvez m'expliquer un peu pourquoi vous avez mis le premier ligne X=zeros(n,1). Merci bien
0
khunlun Messages postés 110 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 17 avril 2012 27
14 mars 2011 à 10:30
Bonjour,

Le zeros(n,1) initialise le vecteur.
X est alors un vecteur colonne de n lignes contenant des 0.
On peut ensuite le remplir avec les valeurs calculées par la suite.
Si n est connu, ca permet d'optimiser un peu le code.

Pour de petites valeurs de n, on ne voit pas la différence.
Pour de grandes valeurs de n, le résultat est plus que visible (temps de calcul).

Bonne journée
0
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011
14 mars 2011 à 10:52
Merci bien pour votre aide;)
0
khunlun Messages postés 110 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 17 avril 2012 27
14 mars 2011 à 11:01
De rien ^^
0
ozagi Messages postés 17 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 30 mai 2011
14 mars 2011 à 11:09
Excusez moi, je suis débutant en matlab et j'ai écrit ce code pour la mm exercice

function X=Exercice2_Question3(a,c,m, X0,n)
X= zeros(n,1);
X(1,1)=X0;
for k=2:n
X(k+1,1)=mod(a*X(k,1)+c,m);
end;

et après j'ai essayé d'exécuter ce code et le logiciel de matlab m'affiche

>> Exercice2_Question3(123456789,65539,0,2^31,1200)
??? Undefined function or method 'Exercice2_Question3' for
input arguments of type 'double'.

merci d'avance
0