Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 21

Функция rand в цикле выводит одно и то же значение

27.05.2016, 01:10. Показов 2963. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! В общем, прилагаю условие задачи и мой написанный код Проблема, как я считаю, незначительная, однако я никак не могу понять что мне конкретно стоит поменять в моем коде. Проблема с rand(), а конкретно - rand() в цикле выводит мне одни и те же значения, из-за чего нельзя реализовать бросок двух кубиков одновременно. Пытаясь что-то исправить, заметил, что если прописать system("pause") между двумя вызовами функции rollDice() - кубики, в большинстве случаев, попадаются различные. Но это явно будет глупо, потому как на экране два кубика должны появляться мгновенно, без каких-либо пауз. Заранее спасибо

Задача:
Написать игру в которой имитируется бросание кубиков компьютером и пользователем. В игре 2 кубика и на каждом из них может выпасть от 1 до 6 очков. Реализовать определение программой первого ходящего. Каждый делает по четыре броска. После бросков показать, нарисованные символами кубики и количество очков, выпавших на них. После пары бросков (бросок компьютера + бросок пользователя) выводить на экран промежуточный результат — количество набранных очков игроком и компьютером. В конце сообщить о том, кто выиграл по итогам всех бросков.

Кусок кода, ответственный за все:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
int rollDice() {
    srand(time(NULL));
    int roll = 1 + rand() % 6;
    switch (roll) {
    case 1: 
        cout << "@@@@@@@@@@" << endl <<
                "@@@@@@@@@@" << endl <<
                "@@@@  @@@@" << endl <<
                "@@@@@@@@@@" << endl <<
                "@@@@@@@@@@";   
        cout << endl;
        return 1;
        break;
    case 2:
        cout << "@@@@@@@@@@" << endl <<
                "@  @@@@@@@" << endl <<
                "@@@@@@@@@@" << endl <<
                "@@@@@@@  @" << endl <<
                "@@@@@@@@@@";
        cout << endl;
        return 2;
        break;
    case 3:
        cout << "@@@@@@@@@@" << endl <<
                "@  @@@@@@@" << endl <<
                "@@@@  @@@@" << endl <<
                "@@@@@@@  @" << endl <<
                "@@@@@@@@@@";
        cout << endl;
        return 3;
        break;
    case 4:
        cout << "@@@@@@@@@@" << endl <<
                "@  @@@@  @" << endl <<
                "@@@@@@@@@@" << endl <<
                "@  @@@@  @" << endl <<
                "@@@@@@@@@@";
        cout << endl;
        return 4;
        break;
    case 5:
        cout << "@@@@@@@@@@" << endl <<
                "@  @@@@  @" << endl <<
                "@@@@  @@@@" << endl <<
                "@  @@@@  @" << endl <<
                "@@@@@@@@@@";
        cout << endl;
        return 5;
        break;
    case 6:
        cout << "@@@@@@@@@@" << endl <<
                "@  @  @  @" << endl <<
                "@@@@@@@@@@" << endl <<
                "@  @  @  @" << endl <<
                "@@@@@@@@@@";
        cout << endl;
        return 6;
        break;
    }            
    
}
 
int game() {
    
    for (int i = 0; i < 2; i++) {
        int res1 = rollDice();
        cout << endl;
    }
    
    return 0;
    
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2016, 01:10
Ответы с готовыми решениями:

Rand() выдаёт одно и тоже значение в Code::Blocks
Доброго всем здоровья ! Во время выполнения одного из упражнений возникла трудность: функция rand() каждый раз присваивает одно и тоже...

Программа выводит только одно значение
Здравствуйте. Есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; using namespace std; #define nil NULL; ...

При хешировании разных слов функция md5() выводит одно и то же значение
Сталкивался кто-нибудь с проблемой, что при хешировании разных слов, функция md5() выводит одно и то же значение?

2
6 / 6 / 3
Регистрация: 29.08.2014
Сообщений: 97
27.05.2016, 01:24
C++
1
srand(time(NULL));
Это дело надо вызывать один раз перед последующими вызовами rand(); Попробуйте вынести это куда нибудь в начало программы.
1
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 21
27.05.2016, 01:31  [ТС]
Спасибо большое! Все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2016, 01:31
Помогаю со студенческими работами здесь

Функция rand() выдает одно и то же число
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; void main() { int i=rand()%10; printf(&quot;%d&quot;,i); } при запуске,на одном компьютере все...

Rand не выводит рандомное значение
Почему команда rand() srand() не выводит рандомное значение на Win 7 64 bit. Объясните пожалуйсто. А если...

Random в цикле дает одно значение
Random RandomNum = new Random(); while (i &lt; 50) { X = RandomNum.Next(1,999); i++; ...

Вывести в цикле только одно значение
Здравствуйте. Переделываю дизайн и застрял на выводе языковых иконок. Вот что имею $lang_go // текущий язык, строка $langs // массив ...

Как цикле первым N одно значение, следующим увеличивать
Здравствуйте. Подскажите пожалуйста, нужно в цикле первым трем поставить 1, вторым трём 2, третьим трём 3 и т.д. Как это сделать? Ещё один...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Настройка записи справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru