function P=customproc_adapt(m0,n0) global m n m = m0; n = n0; P = ones(m^n,1); P = P/sum(P); if 0 k = 1; v = 1/(n-k); pk = v/2 + 1/2; [GIND,BIND] = getgbind(m,n,k); P(GIND) = P(GIND)*pk; P(BIND) = P(BIND)*(1-pk); %P=P/sum(P); end for k = 1:n-1 %for k = 1:2 %k v0 = 1/(n-k); %v0 = 1; good = 0; p0 = 0; p1 = .5; while ~good pk = (p0+p1)/2; v = kval(P,k,pk); if v < v0 % v is too big -- make p smaller p1 = pk; else p0 = pk; end good = (abs(v-v0)<1e-6); end %pk %if k~=3 %global tha %pk = tha; %pk = rand; %end [GIND,BIND] = getgbind(m,n,k); P(GIND) = P(GIND)*pk; P(BIND) = P(BIND)*(1-pk); P=P/sum(P); end return function v = kval(P,k,pk) global m n [GIND,BIND] = getgbind(m,n,k); P(GIND) = P(GIND)*pk; P(BIND) = P(BIND)*(1-pk); P=P/sum(P); [hh,Ht,H] = gethhn(P,m,n); v = hh(k,end); return