Создание последовательности Halton в Octave - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу создать вектор, содержащий M «равномерно» распределенных чисел на [0,1], используя последовательность Хэлтона. Я думаю, что сделал это как в [wikipedia] [1].

  u=double(zeros(M,1));      
  for index= 1:M
        i=index;
        r=0;
        f=1;
        while true
          if not(i>0)
            break;
          end
          f=double(f)./double(base);
          r=r+f.*(mod(i,base));
          i= floor(double(i)./double(base));
        endwhile
        u(index)=r;

Это решение, благодаря посту ниже.

1 Ответ

1 голос
/ 02 апреля 2020

Из псевдокода последовательности Хэлтона, я думаю, вы можете настроить while l oop немного, как показано ниже, и повторить попытку

while true
  if not(index>0 && number<M+1)
    break;
  end
  f=double(f)./double(base);
  r=r+f.*(mod(index,base))
  index= floor(index./base); 
  u(number)=r;
  number=number+1;
end
...