function FN = randFN(nstate,NN,d,estr) %if ~exist('d','var') % d=1; %end if ~exist('estr','var') exact = 0; else exact = strcmp(estr,'exact'); end FN = {}; if (NN<0) NN = -NN; NNj = NN; else NNj = 1:NN; end for j=NNj FN{j} = randF(nstate,j,d,exact); end return function F = randF(nstate,lenseq,d,exact) % F is a random function $\X^n \to [0,1]$ that sat. ibd w/c=1 X = list_all_ind(repmat(nstate,1,lenseq)); K = 10; %K = 1; %K = lenseq; %F(1) = 0; PROGstart(size(X,1),'generating randF...'); for i=1:size(X,1) %for i=2:size(X,1) good = 0; while ~good F(i) = K*rand; if exact F(i) = round(F(i)); end good = 1; for j = 1:i-1 good = goodij(X,F,i,j,d,exact); if ~good, break, end; end end %fprintf('randF: done %d of %d \n',i,size(X,1)); PROGupdate(i); end PROGend; return function b = goodij(X,F,i,j,d,exact) x = X(i,:); y = X(j,:); if (length(find(x~=y))==1) if exact b = (abs(F(i)-F(j))==1); else b = (abs(F(i)-F(j))<=d); end else b = 1; end return