函数模板未正确生成随机数

Posted

技术标签:

【中文标题】函数模板未正确生成随机数【英文标题】:Function template isn't producing random numbers properly 【发布时间】:2014-10-18 09:30:11 【问题描述】:

我有一个函数模板,它应该接受一个向量并在其中生成随机数。但是,当我打印整个向量时,它都是零。

代码:

const  int smallSize = 20;

// declare small vector
vector <int> smallVector(smallSize);

genRand(smallVector, smallSize);

// make copy of small vector 
vector<int> copySmallVector = smallVector;

// function template for generating random numbers
template<class T, class B>void genRand(T data, B size)

    for (B i = 0; i < size; i++)
    
        data[i] = (1 + rand() % size);
    

【问题讨论】:

您是否致电srand() 将随机引擎播种到任何地方? 我添加,srand 进入我的主要,我继续得到所有 0 的随机生成 Paul R 的回答是正确的,虽然调用srand() 应该做一次。 考虑generate(myvec.begin(), myvec.end(), rand); 【参考方案1】:

您正在向量的副本中生成随机数,然后在函数返回时将其丢弃。

变化:

template<class T, class B>void genRand(T data, B size)

到:

template<class T, class B>void genRand(T &data, B size)
                                       ^^^^^^^

【讨论】:

以上是关于函数模板未正确生成随机数的主要内容,如果未能解决你的问题,请参考以下文章

Django 模板 - 列表未正确呈现

Python 错误:在 SWIG 生成的 C++ 模板代码模块中未定义构造函数

模板化成员函数不能从同一个类调用非模板化成员函数,C++

模板函数替换仅在一个参数中未使用std :: function时才起作用

严格模式——let和const——箭头函数——解构赋值——字符串模板symbol——Set和Map——生成器函数

Django模板Javascript将python变量传递给javascript