samplediscretedistribution.m

来自「Continuous Profile Models (CPM) Matlab T」· M 代码 · 共 42 行

M
42
字号
% function ind = sampleDiscreteDistribution(x)%% given a 1D discrete probability distribution, x, % take a sample from itfunction ind = sampleDiscreteDistribution(xx)if (issparse(xx))  xx=full(xx);endif (min(size(xx))>1)  error('x should be 1d');endif (sum(xx)==0)  ind=0;  return;end%normalize x in case it isn'tx = xx./sum(xx);if (sum(x)-1>100*eps)  warning('sum should equal 1'); keyboard;end%generate random number uniformly between 0 and 1:randNum = rand;%form cumulative distributioncumDistrib = cumsum(x);ind = min(find(cumDistrib>=randNum));if (isempty(ind)|ind<1)  warning('ind<1'); keyboard;  ind=0;end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?