fonctions utilisées : zeros(), ones(), imwrite()

Une promenade aléatoire avec Octave



promenade aléatoire 300 000

Nous partons du pixel central et à chaque étape, nous nous se déplaçons aléatoirement vers le pixel qui est soit au dessus, en dessous, à droite ou à gauche. Il y a 200 000 étapes. Il s'agit de donner une image de la trajectoire en créant d'abord une matrice que l'on convertit ensuite en image.

On a fabriqué une matrice 1601×1601 pleine de 0 (correspondant à la couleur noire ). À chaque étape, le terme de la matrice correspondant à la nouvelle position est augmenté de 25, le pixel correspondant s'éclaircit. Au bout de 11 passages, le pixel a la clarté maximale puisque le terme de la matrice dépasse 255.

Pour une présentation plus agréable, on a découpé la partie intéressante de l'image obtenue avec Octave. Curieusement les formes qu'on obtient sont très varièes. La promenade dure une trentaine de secondes…

Le code Octave

n=800;
k=200000;
tic

#construction de la matrice

m=2*n+1;
M=zeros(m);

#construction des listes
#aleatoire
a=rand(1,k);
a=floor(4*a);
#coordonnees 
x=zeros(1,k+1);
y=zeros(1,k+1);
x(1)=n+1;
y(1)=n+1;


for e=1:k,
	x(e+1)=x(e);
	y(e+1)=y(e);
	switch( a(e))
		case 0 
			x(e+1)++ ;
		case 1 
			x(e+1)--;	
		case 2 
			y(e+1)++ ;
		case 3 
			y(e+1)-- ;
	endswitch
M(x(e),y(e))=min(M(x(e),y(e))+1,255);
endfor;

M=uint8(25*M);
imwrite('promenade31.png',M)
t=toc

On crée une iste de 200 000 nombres aléatoires prenant les valeurs 0, 1, 2 ou 3. Suivant le nombre obtenu, on se déplace vers le haut, le bas, la droite ou la gauche.


fait le 20 août 2008