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;
}