实施4维霍尔顿序列
Implementing 4-dimensional Halton Sequence
可以在此处找到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
相关文章:
- 将二维矢量传递给类
- 指向多维数组C++的指针
- C++使用数组作为多维数组,尽管将其初始化为带有指针的 1D
- 实施具有 C++20 概念的配对概念
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 将值从二维数组输出到文本文件
- 我在二维向量中是否正确分配了内存
- 如何创建多维类
- 带结构的二维矢量:如何存储元素
- STL算法函数在多个一维容器上的使用
- 在二维数组中查找最小值和最大值?
- 使用递归模板动态分配的多维数组
- 多维数组 C++ 中数组下标的类型"int[int]"无效
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 为什么我们将单个或多维数组的大小声明为常量值?
- 实施4维霍尔顿序列