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]
这是我的代码
#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]