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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sashesk
0 / 0 / 0
Регистрация: 27.01.2016
Сообщений: 6
#1

Почему не работает рандом? - C++

27.01.2016, 09:36. Просмотров 284. Ответов 9
Метки нет (Все метки)

Доброго времени суток господа, проблема моя заключается в том, что при попытке сгенерировать рандомное число для знака генерируется одно и то же число, предоставляю фрагмент кода ниже. p.s. гуглил, не помогло.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
srand(time(NULL));
            num1 = rand() % 10; //Random 1'st number.
            num2 = rand() % 10;// Random 2'd number.
            if (num2 == 0)
                num2 = rand() % 10; // This is because we cannot divide by zero.
            op1 = rand() % 3+1; //random operator.
            if (op1 == 1)
                op1 = '+';
            else if (op1 == 2)
                op1 = '-';
            else if (op1 == 3)
                op1 = '*';
            else(op1 == 4);
            op1 = '/';
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2016, 09:36     Почему не работает рандом?
Посмотрите здесь:

C++ Почему не работает?
C++ Почему не работает???
Почему не работает C++
почему не работает? C++
Почему работает? C++
C++ почему не работает?
C++ Почему рандом не выходит?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GbaLog-
Не Эксперт C++
2025 / 825 / 218
Регистрация: 24.08.2014
Сообщений: 3,177
Записей в блоге: 1
Завершенные тесты: 2
27.01.2016, 09:40     Почему не работает рандом? #2
sashesk, Ты srand(time(nullptr)); в начале main поставь, если она сейчас не там стоит.
sashesk
0 / 0 / 0
Регистрация: 27.01.2016
Сообщений: 6
27.01.2016, 09:43  [ТС]     Почему не работает рандом? #3
Именно в main или в void? попробовал и там и там, не помогло.

Добавлено через 32 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void exersices(int a, int& right, int& wrong,int& wstreak,int& rstreak)
{
    double num1, num2, num3, result;
    char op1, op2, op3;
    
    if (a > 0 && a <= 10) // Here i create if statement to understand how many questions will be in programm and make them harder.
    {
        for (int i = 0; i < a; i++) // Here i need to create questions.
        {
            
            srand(time(NULL));
            num1 = rand() % 10; //Random 1'st number.
            num2 = rand() % 10;// Random 2'd number.
            if (num2 == 0)
                num2 = rand() % 10; // This is because we cannot divide by zero.
            op1 = rand() % 3+1; //random operator.
            if (op1 == 1)
                op1 = '+';
            else if (op1 == 2)
                op1 = '-';
            else if (op1 == 3)
                op1 = '*';
            else(op1 == 4);
            op1 = '/';
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3838 / 1596 / 187
Регистрация: 20.02.2013
Сообщений: 4,586
Записей в блоге: 21
27.01.2016, 09:43     Почему не работает рандом? #4
sashesk, возможно, вот это поможет.
GbaLog-
Не Эксперт C++
2025 / 825 / 218
Регистрация: 24.08.2014
Сообщений: 3,177
Записей в блоге: 1
Завершенные тесты: 2
27.01.2016, 09:44     Почему не работает рандом? #5
sashesk, srand(time(nullptr)); должна всегда в начале main стоять, чтобы рандом работал.
sashesk
0 / 0 / 0
Регистрация: 27.01.2016
Сообщений: 6
27.01.2016, 09:46  [ТС]     Почему не работает рандом? #6
makfak, поставил, не особо помогло, числа выдает рандомные в пределах указанного, но вот оператор деление.
к тому же если поставить оператор в int то все время будет выдавать число 47, я так понимаю это и есть /.
GbaLog-
Не Эксперт C++
2025 / 825 / 218
Регистрация: 24.08.2014
Сообщений: 3,177
Записей в блоге: 1
Завершенные тесты: 2
27.01.2016, 09:49     Почему не работает рандом? #7
sashesk, Насколько я помню, то в этой строке у вас рандом от 1 до 3.
C++
16
 op1 = rand() % 3+1; //random operator.
sashesk
0 / 0 / 0
Регистрация: 27.01.2016
Сообщений: 6
27.01.2016, 09:52  [ТС]     Почему не работает рандом? #8
makfak, да действительно, вы правы, поставил 4+1, но сути это не изменило, все так же выдает деление.
GbaLog-
Не Эксперт C++
2025 / 825 / 218
Регистрация: 24.08.2014
Сообщений: 3,177
Записей в блоге: 1
Завершенные тесты: 2
27.01.2016, 09:56     Почему не работает рандом? #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от sashesk Посмотреть сообщение
C++
1
else(op1 == 4);
А что это за выражение-то? Может вы имели ввиду:
C++
1
else if(op1 == 4) op1 = '/';
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2016, 10:00     Почему не работает рандом?
Еще ссылки по теме:

C++ Почему не работает gets?
C++ Не работает. Почему?
Не работает рандом C++
Связный список. Не работает тайпдэф и не видит рандом() C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
sashesk
0 / 0 / 0
Регистрация: 27.01.2016
Сообщений: 6
27.01.2016, 10:00  [ТС]     Почему не работает рандом? #10
спасибо, очень глупая ошибка, уже несколько часов думаю в чем проблема может быть!
Yandex
Объявления
27.01.2016, 10:00     Почему не работает рандом?
Ответ Создать тему
Опции темы

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