C++随机数始终相同

NL3*_*NL3 1 c++ random

我目前停留在运行时生成随机数.在Java中,我只是调用Math.random()而且我已经完成了(我只需要一个简单的RNG).在C++中,我已经尝试了几种方法来生成随机数,并且总是得到相同的结果.

目前,我使用以下方法获取MIN和MAX之间的随机数:

unsigned int getRandomNumber(int min, int max){
    std::mt19937 mt(1729);
    std::uniform_int_distribution<int> dist(min, max);
    return dist(mt);
}
Run Code Online (Sandbox Code Playgroud)

我有一个对象,在其构造函数中调用此函数,并将返回的值赋给属性.我目前创建此对象的五个实例,随机数始终相同.设置大范围(1 - 1000)不会改变这一点.数字总是一样的.安全性不是问题,它是一个非常简单的应用程序.

Som*_*ken 7

随机数生成器与种子一起使用.基本上它是一个只为随机数生成器设置一次的数字.如果每次尝试生成一个数字时重新播种随机数生成器,每次都会得到相同的数字.您应该std::mt19937只创建一次对象.