C# 重置后产生相同序列的随机数的C++与Vc
在c中,我编写了一个函数,该函数使用随机数生成器生成序列中的下一个随机数,我在构造函数中添加了一个特殊值:C# 重置后产生相同序列的随机数的C++与Vc,c#,c++,random,C#,C++,Random,在c中,我编写了一个函数,该函数使用随机数生成器生成序列中的下一个随机数,我在构造函数中添加了一个特殊值: public randomS(int number = DefaultValue) : base(number) { seed = p; random = new Random((int) seed); } protected int GenerateNextSequence() { return ra
public randomS(int number = DefaultValue) : base(number)
{
seed = p;
random = new Random((int) seed);
}
protected int GenerateNextSequence()
{
return random.Next(MIN_VALUE, MAX_VALUE);
}
然后,用户可以调用重置函数重置此序列,其中我使用相同的值再次为随机数生成器设定种子,GenerateNext序列将开始生成重置之前生成的相同数字:
public override void ResetSequence()
{
random = new Random((int) seed);
state = true;
}
我想在C++中做类似的事情。不确定是否有可能在C++中做类似的事情。
如果有,有人能帮我吗?你可以给随机数生成器播种。std::mt19937通过调用obj.seedvalue
要在1到10之间创建10个整数,请执行以下操作:
#include <iostream>
#include <random>
class myrandom
{
public:
int seed_;
int min_ = 0, max_ = 10;
std::mt19937 gen_; // random number generator
std::uniform_int_distribution<int> dist_ {min_, max_}; // random number distribution
// set a random seed if no argument provide
myrandom (int seed = std::random_device{}()) { seed_ = seed; gen_.seed(seed); }
int get() { return dist_(gen_); }
void reset () { gen_.seed(seed_); }
};
int main()
{
myrandom randobj;
for (int i=0; i<10; i++)
std::cout << randobj.get() << " ";
std::cout << "\n";
randobj.reset();
for (int i=0; i<10; i++)
std::cout << randobj.get() << " ";
}
对不起,堆栈溢出不是代码翻译服务。你的问题是主题,请删除它。@ ReMe你在C++中使用了哪个随机数生成器?如果您正在使用较旧的函数,请使用。对于in,各种预定义的随机数生成器都有一个用于重新播种的种子方法。对不起,我无意逐字翻译它。我只需要帮助了解C++中是否有类似的东西。我对C++很陌生,我仍然在学习语言。