Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用更少的空间。@Bathsheba-你能解释一下吗?@CMate-是的。不需要创建和销毁临时数组。简单地说,例如,如果绘制1的概率,在任何情况下都取决于以前的值或以前的值,那么基于1和0的总比例的简单随机数绘图将不是一个可接受的优化。@Bathsheba_C++_Arrays_C++11_Random_Stl - Fatal编程技术网

C++ 使用更少的空间。@Bathsheba-你能解释一下吗?@CMate-是的。不需要创建和销毁临时数组。简单地说,例如,如果绘制1的概率,在任何情况下都取决于以前的值或以前的值,那么基于1和0的总比例的简单随机数绘图将不是一个可接受的优化。@Bathsheba

C++ 使用更少的空间。@Bathsheba-你能解释一下吗?@CMate-是的。不需要创建和销毁临时数组。简单地说,例如,如果绘制1的概率,在任何情况下都取决于以前的值或以前的值,那么基于1和0的总比例的简单随机数绘图将不是一个可接受的优化。@Bathsheba,c++,arrays,c++11,random,stl,C++,Arrays,C++11,Random,Stl,使用更少的空间。@Bathsheba-你能解释一下吗?@CMate-是的。不需要创建和销毁临时数组。简单地说,例如,如果绘制1的概率,在任何情况下都取决于以前的值或以前的值,那么基于1和0的总比例的简单随机数绘图将不是一个可接受的优化。@Bathsheba-我不明白这怎么会无效。要求是从非零值集中选择一个随机索引。这将首先确定有多少个非零值,然后在0和该值之间选择一个随机数。然后它将遍历数组,搜索这个索引。在时间复杂度上,它与初始方法相同。使用更少的空间。@Bathsheba-你能解释一下吗?@



使用更少的空间。@Bathsheba-你能解释一下吗?@CMate-是的。不需要创建和销毁临时数组。简单地说,例如,如果绘制1的概率,在任何情况下都取决于以前的值或以前的值,那么基于1和0的总比例的简单随机数绘图将不是一个可接受的优化。@Bathsheba-我不明白这怎么会无效。要求是从非零值集中选择一个随机索引。这将首先确定有多少个非零值,然后在0和该值之间选择一个随机数。然后它将遍历数组,搜索这个索引。在时间复杂度上,它与初始方法相同。使用更少的空间。@Bathsheba-你能解释一下吗?@CMate-是的。不需要创建和销毁临时数组。简单地说,例如,如果绘制1的概率,在任何情况下都取决于以前的值或以前的值,那么基于1和0的总比例的简单随机数绘图将不是一个可接受的优化。@Bathsheba-我不明白这怎么会无效。要求是从非零值集中选择一个随机索引。这将首先确定有多少个非零值,然后在0和该值之间选择一个随机数。然后它将遍历数组搜索该索引。我相信在撰写本文时,这是一个更好的答案,因为它允许水库数组so+1中的结构,我希望OP接受。关于RNG的观点很好。您正在为阵列中的每个元素调用一次RNG,这可能会降低它的速度。如果您愿意以内存换取速度,并且如果您可以估计阵列中非零元素的数量,则可以将存储库设置为该大小,或者稍微大一点。这样,您就大大降低了重复调用随机数生成器的可能性。然后,如果您只需要一个索引,您可以针对存储库本身再次调用随机数生成器。在撰写本文时,我相信这是一个更好的答案,因为它允许存储库数组中的结构so+1,我希望OP接受。关于RNG,这一点很好。您正在为阵列中的每个元素调用一次RNG,这可能会降低它的速度。如果您愿意以内存换取速度,并且如果您可以估计阵列中非零元素的数量,则可以将存储库设置为该大小,或者稍微大一点。这样,您就大大降低了重复调用随机数生成器的可能性。然后,如果您只需要一个索引,您可以针对水库本身再次调用随机数生成器。使用此解决方案选择数字的概率不是均匀分布的。@IvayloStrandjev是的,我想我们需要先生成一个唯一随机数的列表。这与时间向量相同。我相信你可以用简单的
rand()
替换
rand()%a.size()
@IvayloStrandjev为什么?使用此解决方案选择数字的概率不是均匀分布的。@IvayloStrandjev是的,我想我们需要先生成一个唯一随机数列表。这与时间向量相同。我相信你可以用简单的
rand()
替换
rand()%a.size()
@伊瓦洛斯特兰德耶夫为什么?
vector<int> A = {0, 1, 1, 0, 0, 1, 0, 1};
vector<int> b;
for(int i=0;i<A.size();i++)
    if(A[i]) 
        b.push_back(i);
int value = 0;
int index = 0;
while(int i = 0; i < A.size(); i++) {
    if(!A[i]) continue;
    auto j = rand();
    if(j > value) {
        index  = i;
        value = j;
    }
}
vector<int> A = {0,1,1,0,0,1,0,1};
random_shuffle(A.begin(),A.end());
auto it = find_if(A.begin(),A.end(),[](const int elem){return elem;});