C++ 范围内的连续随机数

C++ 范围内的连续随机数,c++,random,C++,Random,我有以下代码: #include <iostream> #include <cstdlib> #include <ctime> int getRandomNumber(int min,int max) { static const double fraction = 1.0/(static_cast<double>(RAND_MAX)+1.0); return static_cast<int>(rand()*fract

我有以下代码:

#include <iostream>
#include <cstdlib>
#include <ctime>

int getRandomNumber(int min,int max)
{
    static const double fraction = 1.0/(static_cast<double>(RAND_MAX)+1.0);
    return static_cast<int>(rand()*fraction*(max-min+1)+min);
}

int main()
{
    srand(static_cast<int>(time(0)));
    std::cout<<getRandomNumber(1,6);
    return 0;
}
#包括
#包括
#包括
int getRandomNumber(int最小值,int最大值)
{
静态常数双分数=1.0/(静态铸型(RAND_MAX)+1.0);
返回静态(rand()*分数*(最大最小值+1)+最小值);
}
int main()
{
静态施法(时间(0));
std::cout函数
time()
以秒为单位返回时间,因此在同一秒内运行程序两次或多次将导致随机数系统使用完全相同的数字进行播种。

函数
time()
函数以秒为单位返回时间,因此在同一秒内运行程序两次或两次以上将导致随机数系统使用完全相同的数字进行种子设定。

当使用函数time()作为种子并在短时间间隔内运行程序时,rand()的第一个结果与RAND_MAX相比,将发生非常小的变化

这就解释了为什么当用分数从1到6得到一个数字时,得到的是相同的数字

下面是另一种从1到6获取随机数的方法,这可能会更好

rand() % 6 + 1
当使用函数time()作为种子并在短时间间隔内运行程序时,与rand_MAX相比,rand()的第一个结果将发生非常小的变化

这就解释了为什么当用分数从1到6得到一个数字时,得到的是相同的数字

下面是另一种从1到6获取随机数的方法,这可能会更好

rand() % 6 + 1

我用两个cout运行上面的程序。它给出了两个相同的数字作为结果。我看到您使用的是一个int数。它只能使用rand()生成。为什么您会遇到很多麻烦。'coutBy the way;getRandomNumber()可以生成最多RAND_MAX+1个不同的数字,而不考虑最小值和最大值。预测无法返回的数字相对容易。我用两个cout运行上述程序。它给出了两个相同的数字作为结果。我看到您使用的是整数。它可以使用RAND()生成只有。为什么你会遇到很多麻烦。'coutBy the way;getRandomNumber()可以生成最多RAND_MAX+1个不同的数字,而不管最小值和最大值。预测无法返回的数字相对容易。time()函数用于第一个srand函数;从未使用过,因此与我们所看到的输出无关。@denis相反。
time()
函数用于调用
srand()
,它确定了
rand()
函数将产生的随机数序列。如果调用
srand())
使用相同的数字,您可以从
rand()函数中获得完全相同的随机数序列。
伙计们,我使用的是代码块。每当我使用getRandomNumber()的单个调用时,我得到了相同的数字,如5。但当我调用它两次时,它会在每次运行时的同一秒内生成两个随机数,如56或42。@希望它在同一秒内调用
srand()
两次才导致问题。您可以调用
rand()
只要你愿意,它就会给你随机数,除非你一直使用
srand()
每秒多次重置它。time()函数在第一个srand函数中使用;从未使用过,因此与我们所看到的输出无关。@denis相反。
time()
函数用于调用
srand()
,它确定
rand()
函数将产生的随机数序列。如果使用相同的数字调用
srand()
,则从
rand()得到完全相同的随机数序列
function。伙计们,我使用的是代码块。每当我使用getRandomNumber()的单个调用时,我都会得到相同的数字,比如5。但是当我调用它两次时,它会在我每次运行时的同一秒内生成两个随机数,比如56或42。@希望它调用的是
srand()
在同一秒钟内出现问题的两次。您可以根据需要多次调用
rand()
,除非您继续使用
srand()
每秒多次重置它,否则它将给您随机数。