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

ozagi Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
ozagi Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
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 117 Date d'inscription   Statut Membre Dernière intervention   27
 
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   Statut Membre Dernière intervention  
 
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 117 Date d'inscription   Statut Membre Dernière intervention   27
 
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   Statut Membre Dernière intervention  
 
Merci bien pour votre aide;)
0
khunlun Messages postés 117 Date d'inscription   Statut Membre Dernière intervention   27
 
De rien ^^
0
ozagi Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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