C# 重置后产生相同序列的随机数的C++与Vc

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

在c中,我编写了一个函数,该函数使用随机数生成器生成序列中的下一个随机数,我在构造函数中添加了一个特殊值:

    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++很陌生,我仍然在学习语言。