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

ozagi Messages postés 24 Statut Membre -  
ozagi Messages postés 24 Statut Membre -
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

1 réponse

  1. khunlun Messages postés 123 Statut Membre 28
     
    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
    1. ozagi Messages postés 24 Statut Membre
       
      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
    2. khunlun Messages postés 123 Statut Membre 28
       
      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
    3. ozagi Messages postés 24 Statut Membre
       
      Merci bien pour votre aide;)
      0
    4. khunlun Messages postés 123 Statut Membre 28
       
      De rien ^^
      0
    5. ozagi Messages postés 24 Statut Membre
       
      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