Mercurial > hg > ishara
view sequences/rndscanl.m @ 6:0ce3c2070089
Removed duplicate code and fixed doc in timed_action.
author | samer |
---|---|
date | Mon, 14 Jan 2013 14:33:37 +0000 |
parents | 3f77126f7b5f |
children | b1280319413e |
line wrap: on
line source
function X=rndscanl(gen,s0,varargin) % rndscanl - Random scanl % % rndscanl :: % (S,A -> rndgen S) ~'random scanner', % S ~'initial state', % seq A, % rndstate ~'initial random state' % -> seq S. n=length(varargin)-1; rs0=varargin{n+1}; if n>1, X=zipaccum(@zafn,varargin(1:n),{s0,rs0}); elseif n==1 X=mapaccum(@mafn,varargin{1},{s0,rs0}); else X=unfoldseq(@ufn,{s0,rs0}); end function [x,s]=ufn(s0) setrndstate(s0{2}); x=gen(s0{1}); s={x,getrndstate}; end function [x,s]=mafn(y,s0) setrndstate(s0{2}); x=gen(s0{1},y); s={x,getrndstate}; end function [x,s]=zafn(varargin) s0=varargin{n+1}; setrndstate(s0{2}); x=gen(s0{1},varargin{1:n}); s={x,getrndstate}; end end