view sequences/rndzip.m @ 13:03694e5c8365

Reorganised some high order list functions to correct class-based method dispatch; fixed some docs.
author samer
date Wed, 16 Jan 2013 12:12:34 +0000
parents 3f77126f7b5f
children b1280319413e
line wrap: on
line source
function X=rndzip(gen,varargin)
% rndzip - Random sequence by zipping argument sequences
%
% rndzip ::
%    (A1, ..., An -> rndgen B) ~'sampling function',
%    seq A1, ..., seq An       ~'argument sequences', 
%    rndstate                  ~'initial random state'
% -> seq B.

	n=length(varargin)-1;
	if n>0
		X=zipaccum(@zipfn,varargin(1:n),varargin{n+1});
	else
		X=unfoldseq(@ufn,varargin{1});
	end

	function [x,s]=ufn(s0)
		setrndstate(s0);
		x=gen();
		s=getrndstate;
	end

	function [x,s]=zipfn(varargin)
		setrndstate(varargin{n+1});
		x=gen(varargin{1:n});
		s=getrndstate;
	end
end