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

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. 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. 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. 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. Merci bien pour votre aide;)
      0
    4. De rien ^^
      0
    5. 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