C++ 在c+中全局固定种子+;11<;随机>;

C++ 在c+中全局固定种子+;11<;随机>;,c++,c++11,random,C++,C++11,Random,我正在尝试使用新的c++标题和全局固定的种子。以下是我的第一个玩具示例: #include <iostream> #include <random> int morerandom(const int seednum,const int nmax){ std::mt19937 mt; mt.seed(seednum); std::uniform_int_distribution<uint32_t> uint(0,nmax);

我正在尝试使用新的
c++
标题和全局固定的种子。以下是我的第一个玩具示例:

#include <iostream>
#include <random>
int morerandom(const int seednum,const int nmax){
     std::mt19937 mt;
     mt.seed(seednum);
     std::uniform_int_distribution<uint32_t> uint(0,nmax);
     return(uint(mt));
}
int main(){
    const int seed=3;
    for (unsigned k=0; k<5; k++){
        std::cout << morerandom(seed,10) << std::endl;
    }
    return 0;
} 
在main中,只需将
mt
传递到
morerandom()
。我试过:

#include <iostream>
#include <random>
int morerandom(const int nmax)
{

     std::uniform_int_distribution<uint32_t> uint(0,nmax);
     return(uint(mt));
}


int main()
{
    const int seed=3;
    std::mt19937 mt;
    mt.seed(seed);
    for (unsigned k=0; k<5; k++)
    {

        std::cout << morerandom(10) << std::endl;
    }

    return 0;
}
解决方案1

#包括
#包括
int morerandom(常数int nmax,标准::mt19937和mt)
//                             ^^^^^^^^^^^^^^^^
{    
标准:均匀分布单位(0,nmax);
返回(单位(mt));
}    
int main()
{
常数int seed=3;
标准:MT19937MT;
种子山(种子);

对于(unsigned k=0;k)编译器的抱怨是正确的,因为
mt
的名字在
morerandom
中是未知的。请明确你到底想做什么。我真的不明白你在干什么。@filmore:我不知道如何将mt传递给函数(正在到处搜索&找不到它!)
#include <iostream>
#include <random>
int morerandom(const int nmax)
{

     std::uniform_int_distribution<uint32_t> uint(0,nmax);
     return(uint(mt));
}


int main()
{
    const int seed=3;
    std::mt19937 mt;
    mt.seed(seed);
    for (unsigned k=0; k<5; k++)
    {

        std::cout << morerandom(10) << std::endl;
    }

    return 0;
}
error: ‘mt’ was not declared in this scope return(uint(mt));
#include <iostream>
#include <random>

int morerandom(const int nmax, std::mt19937& mt)
//                             ^^^^^^^^^^^^^^^^
{    
     std::uniform_int_distribution<uint32_t> uint(0,nmax);
     return(uint(mt));
}    

int main()
{
    const int seed=3;
    std::mt19937 mt;
    mt.seed(seed);
    for (unsigned k=0; k<5; k++)
    {    
        std::cout << morerandom(10, mt) << std::endl;
        //                          ^^
    }

    return 0;
}
#include <iostream>
#include <random>

std::mt19937 mt;
// ^^^^^^^^^^^^^

int morerandom(const int nmax)
{    
     std::uniform_int_distribution<uint32_t> uint(0,nmax);
     return(uint(mt));
}    

int main()
{
    const int seed=3;
    mt.seed(seed);
    for (unsigned k=0; k<5; k++)
    {    
        std::cout << morerandom(10) << std::endl;
    }

    return 0;
}