实施4维霍尔顿序列

Implementing 4-dimensional Halton Sequence

本文关键字:4维 实施      更新时间:2023-10-16

可以在此处找到Halton Sequnce的psueDocode。我写了一个可以执行此操作的函数,但是由于某种原因,检查第四维霍尔顿序列的MATLAB结果我的数字不匹配,我不确定为什么。这是我的代码:

double Halton_Seq(int index, double base){
    double f = 1, r;
    while(index > 0){
        f = f/base;
        r = r + f*(fmod(index,base));
        index = index/base;
    }
    return r;
}

这是我得到的前10个结果:

1
0.25
0.5
0.75
0.0625
0.3125
0.5625
0.8125
0.125
0.375

这是MATLAB获取的前10个结果:

  Columns 1 through 2
         0    0.5000
  Columns 3 through 4
    0.2500    0.7500
  Columns 5 through 6
    0.1250    0.6250
  Columns 7 through 8
    0.3750    0.8750
  Columns 9 through 10
    0.0625    0.5625

您忘了在第2行中初始化r

r = 0;

double Halton_Seq(int index, int base){
  double f = 1, r = 0;
  while(index > 0){
    f = f/base;
    r = r + f* (index% base);
    index = index/base;
  }
  return r;
}
// Output for 10 (base 2)
0.000000
0.500000
0.250000
0.750000
0.125000
0.625000
0.375000
0.875000
0.062500
0.562500