Rand() 是生成器,即使我调用了 srand(time(NULL))

Rand() is generator the same number even though I called srand(time(NULL))

这是我的代码

#include <iostream> //cout, cin
#include <time.h> // time
#include <stdlib.h> // srand(), rand()
using std::cout; //cout

int main()
{
    srand(time(NULL)); //Initializes a random seed
    int rand_number = rand() % 1 + 100; //Picks a random number between 1 and 100

    cout << rand_number << std::endl;
}

出于某种原因,当我生成随机数时,它一直给我 100。虽然我不相信它应该因为我调用了 srand(time(NULL)) 来初始化种子。

正如评论中所说,rand() % 1 是荒谬的。任何数除以 1 的余数为 0。然后您将其加上 100。

相反,(rand() % 100) + 1 会给你一个 [1, 100] 范围内的随机数。

<random>里面的设施好多了,学习一下也不错

std::mt19937 mt((std::random_device()())); //create engine
std::uniform_int_distribution<int> dist(1, 100); //define distribution

dist(mt); //better random number in range [1, 100]