2016-02-18 6 views
0

Вот мой кодRand() является генератором и тот же номер, даже если я назвал srand (время (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)) для инициализации семени.

+1

'rand()% 1' будет всегда делать' 0'. – Galik

ответ

3

Как сказано в комментариях, 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]