Ладно, я начинаю сходить с ума. Все, что я хочу сделать, это случайное число от 0 до 410, и в соответствии с это страница, мой код должен это делать. И поскольку мне нужно случайное число, а не псевдослучайное число, я также использую srand() таким образом, что, например. этот поток сказал мне сделать. Но это не работает. Все, что я получаю, это число, которое зависит от того, сколько времени прошло с момента моей последней казни. Если я, например. выполнить его снова так быстро, как я могу, число обычно на 6 чисел выше, чем последнее число, и если я жду дольше, оно выше и т. д. Когда оно достигает 410, оно возвращается к 0 и начинается все сначала. Что мне не хватает?
Редактировать: И да, если я удалю строку srand(time(NULL));
, я просто буду получать один и тот же номер (41) каждый раз, когда запускаю программу. Это даже не псевдослучайное, это просто статическое число. Простое копирование первой строки кода из статьи, на которую я ссылался выше, по-прежнему дает мне номер 41 все время. Я звезда в продолжении "Числа 23", или я что-то пропустил?
int main(void) {
srand(time(NULL));
int number = rand() % 410;
std::cout << number << std::endl;
system("pause");
}
want a random number and not a pseudo-random number
- nope srand только гарантирует, что будет возвращен другой. Тем не менее последовательность является псевдослучайной - person Ivaylo Strandjev   schedule 12.01.2015rand()
один или несколько раз, прежде чем использовать значение из него; похоже, у вас довольно плохая реализацияrand
, которая возвращает начальное значение в качестве первого значения. Если вам действительно нужно настоящее случайное число, то вы не можете получить его только с помощью программного обеспечения.std::random_device
может дать вам это, но только при наличии подходящего аппаратного устройства. для его использования. - person Mike Seymour   schedule 12.01.2015