C++ 在立方差分空间中生成离散向量

C++ 在立方差分空间中生成离散向量,c++,random,vector,multidimensional-array,C++,Random,Vector,Multidimensional Array,我想在空间中生成随机离散值向量。简单的例子是一个例子;立方体。在这种情况下,向量的每个系数必须介于两个值之间,这样它就位于多维立方体中。这个立方体可以用它的两个角点(存储在点[0]和点[1]中)来描述。我用C++(11)编程如下: random_device rd; mt19937 eng(rd()); vector<uniform_int_distribution<>> distr; for(int i = 0; i< points[0].size();i++){

我想在空间中生成随机离散值向量。简单的例子是一个例子;立方体。在这种情况下,向量的每个系数必须介于两个值之间,这样它就位于多维立方体中。这个立方体可以用它的两个角点(存储在点[0]和点[1]中)来描述。我用C++(11)编程如下:

random_device rd;
mt19937 eng(rd());
vector<uniform_int_distribution<>> distr;
for(int i = 0; i< points[0].size();i++){
 distr.push_back(uniform_int_distribution<>(point[0].at(i),points[1].at(i)));
}
for(int i = 0;i<trials;i++){
 vector<unsigned> draw;
 for(int j = 0; j< points[0].size();j++){
  draw.push_back(distr.at(j)(eng));
 }
 // Do stuff with vector
}
random_装置rd;
mt19937英语(rd());
矢量分布;
对于(int i=0;i对于(int i=0;i我认为首先你需要定义第三个点是什么,即:假设你的初始立方体是(点[0],点[1]),第三个点是点[2]。你想在(点[0],点[1])和(点[0],点[2])之间的差异中取样,还是在(点[0],点[1])和(点[2],点[1])之间的差异中取样


因此,我会将对ctor的调用更改为
统一分布(点[0]。在(I),点[1]。在(I))
统一分布(点[2]。在(I),点[1]。在(I)))
统一分布(点[0]。在(I),点[2]。在(I))

您试过这到底需要多少时间吗?我知道这样的“冲洗、重新滚动和重复”可能会让人害怕,但如果这不是性能关键的一部分…不,我将实施它并检查后面是否有一个;不幸的是,它是针对浮点值的。也许为整数创建一个分段均匀分布并不难?你建议我将空间分成哪些部分?如果我理解正确,这是行不通的,因为在多维中,向量集:(诱导比(点[0],点[1])\set减去诱导比(点[0],点[2])与诱导比(点[2],点)不同[1]).