Форум программистов, компьютерный форум CyberForum.ru

Генератор случайных чисел - C++

Восстановить пароль Регистрация
 
Turn
7 / 7 / 0
Регистрация: 02.08.2012
Сообщений: 183
10.03.2013, 20:22     Генератор случайных чисел #1
Здраствуййте
C++
1
2
3
4
int a=rand()%10000;
    std::cout << a;
        getchar();
    return 0;
C++
1
2
3
4
int a=rand()%1000;
    std::cout << a;
        getchar();
    return 0;
C++
1
2
3
4
int a=rand()%100;
    std::cout << a;
        getchar();
    return 0;
- в этих кодах "а" почемуто всегда равно 41, а в коде
C++
1
2
3
4
int a=rand()%10;
    std::cout << a;
        getchar();
    return 0;
а = 1, всегда? Почему? помогите пожалуйсто исправить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 20:22     Генератор случайных чисел
Посмотрите здесь:

C++ Генератор случайных чисел
C++ Генератор случайных чисел
C++ Генератор случайных чисел
Генератор случайных чисел C++
C++ Генератор случайных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
10.03.2013, 20:32     Генератор случайных чисел #2
Потому, что ГСЧ выдаёт каждый раз одну и туже последовательность. Нужно задать стартовое значение через srand, чтобы получить что-то другое.
Черный ворон
129 / 123 / 6
Регистрация: 31.01.2012
Сообщений: 435
10.03.2013, 20:33     Генератор случайных чисел #3
C++
1
srand(time(NULL));
добавьте перед вызовом
Karnal
0 / 0 / 0
Регистрация: 10.03.2013
Сообщений: 14
10.03.2013, 20:57     Генератор случайных чисел #4
функция rand() возвращает длинное число, которое на самом деле вычисляется как то, а мы думает что это рандом.
a=rand()%10;
b=rand()%10;
c=rand()%10;
каждый раз ранд будет давать новое длинное значение вычисляемое, мы лишь можем взять остаток от деления, тем самым ограничив его,
если не написать перед a=rand();b=rand();c=rand(); функцию о которой скажу ниже, то при каждом запуске программы rand будет то же самое переменным присваивать ну например 5 7 8 и так каждый запуск.
теперь о сранде srand(10); если тупо написать так вначале программы то толку от нее не будет, поэтому пишут вместо srand(10) srand(time(NULL)); time(NULL) это системные часы, и оно время естественно меняется каждую секунду, поэтому и в сранде будут разные значение, а именно это и дает "перемешывание" случайных чисел.
Yandex
Объявления
10.03.2013, 20:57     Генератор случайных чисел
Ответ Создать тему
Опции темы

Текущее время: 03:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru