소프트웨어/MATLAB

matlab, rand함수를 이용한 두점 만나게하기

cs만두 2012. 4. 12. 15:06

 

ax=[0];ay=[0];bx=[20];by=[20];c=zeros(1,2);

count=0;

for i=1:inf

    r=rand(1); ax_old=[ax]; ay_old=[ay];

    if r>0 && r<0.25

        cx=[0]; cy=[1];      

    elseif r>0.25 && r<0.5

       cx=[1]; cy=[0];

    elseif r>0.5 && r<0.75

       cx=[0]; cy=[-1];

    elseif r>0.5 && r<1.0

       cx=[-1]; cy=[0];

    end

    ax=ax+cx;   ay=ay+cy;

   

    tmpRx(count+1)=ax;

    tmpRoldx(count+1)=ax_old;

    tmpRy(count+1)=ay;

    tmpRoldy(count+1)=ay_old;  

   

    if count~=0 && count ~=1

        if tmpRoldx(count) == ax

            ax=ax-cx-cx;

            tmpRx(count+1)=ax;

        end

        if tmpRoldy(count) == ay

            ay=ay-cy-cy;

            tmpRy(count+1)=ay;

           

        end

    end  

   

    if ax>20

       ax=ax-1;         

    end

    if ay>20

       ay=ay-1;         

    end

    if ax<0

       ax=ax+1;         

    end

    if ay<0

       ay=ay+1;         

    end       

   

  

 r=rand(1);

    bx_old=[bx]; by_old=[by];

    if r>0 && r<0.25

        cx=[0]; cy=[1];      

    elseif r>0.25 && r<0.5

       cx=[1]; cy=[0];

    elseif r>0.5 && r<0.75

       cx=[0]; cy=[-1];

    elseif r>0.5 && r<1.0

       cx=[-1]; cy=[0];

    end

    bx=bx+cx; by=by+cy;   

      

    tmpJx(count+1)=bx;

    tmpJoldx(count+1)=bx_old;

    tmpJy(count+1)=by;

    tmpJoldy(count+1)=by_old;

   

    if count~=0 && count ~=1

        if tmpJoldx(count) == bx

            bx=bx-cx-cx;

            tmpJx(count+1)=bx;

        end

        if tmpJoldy(count) == by

            by=by-cy-cy;

            tmpJy(count+1)=by;

        end

    end  

   

    if bx>20

       bx=bx-1;         

    end

    if by>20

       by=by-1;         

    end

    if bx<0

       bx=bx+1;         

    end

    if by<0

       by=by+1;         

    end           

   

    cla;

    figure(1)

    line(ax,ay,'LineStyle','pentagram','Color','r')

    line(bx,by,'LineStyle','*')

    axis([ 0 10 0 10])

       

    for j= 1: count+1

    line([tmpRoldx(j) tmpRx(j)],[tmpRoldy(j) tmpRy(j)],'Color','r')

    end

    axis([ 0 20 0 20])

   

    for j= 1: count+1

    line([tmpJoldx(j) tmpJx(j)],[tmpJoldy(j) tmpJy(j)],'Color','b')

    end

    axis([ 0 20 0 20])   

   

    if ax==bx && ay==by      

        px=[ax-1 ax-1 ax+1 ax+1];

        py=[ay-1 ay+1 ay+1 ay-1];

        fill(px,py,[0.9 0.2 0.5])

        line(ax,ay,'LineStyle','pentagram','Color','r')

        line(bx,by,'LineStyle','*')

        axis([ 0 20 0 20])

        pause(0.001)      

        return

    end      

annotation(figure(1),'textbox',...

    [0.200764982373678 0.778341793570219 0.1776133960047 0.115059221658206],...

    'String',{'200901325','','김만성'},...

    'FitBoxToText','off',...

    'LineStyle','none');       

count =count+1;

end