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

Не получаю разное случайное чило при вызове функции

23.01.2018, 16:22. Показов 614. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот небольшой код, я создал функцию и пытаюсь получить случайное число.
Функцию хочу встроить в цикл for или while, а в идеале и в другую функцию .
Но при такой попытке я получаю каждый раз одинаковое число.

А вот когда я запускаю отладку, то в пошаговом режиме получается каждый раз разное число. А это почему же?

Кликните здесь для просмотра всего текста
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <string.h>
#include <math.h>
#include <cmath>
#include <iomanip>
#include <stdio.h>
#include <cstdlib>
#include <ctime>
 
 
using namespace std;
 
/*
 
*/
 
// функция проверяет введенные числа на 0, для значений типа int
bool IsNotZeroBoolInt(int x);
 
// функция организовывает ввод числа
int enterNumberInt();
 
//функция проверяет число на отрицательное
bool isNotNegativeInt(int a);
 
//получает ввод данных в 2 переменные
void getEnterTwoNumberInt(int *a, int *b);
 
// обмен значениями, в итоге на 1-е место становится максимальное число
void SwappedInt(int* a, int* b);
 
int getNumberRandom(int a, int b);  // получение числа в заданном диапазоне.
 
void main(void)
{
    SetConsoleCP(1251);         // установка кодовой страницы win-cp 1251 в поток ввода
    SetConsoleOutputCP(1251);   // установка кодовой страницы win-cp 1251 в поток вывода
 
    int a;
    int b;
    printf("\nВведите 2 целых неотрицательных числа : \n\n");
    getEnterTwoNumberInt(&a, &b); // получаем 2 числа
    int x = 0;
    int i = 0;
    do {
        x = 0;
        x = getNumberRandom(a, b);  // получение числа в заданном диапазоне.
        printf("\n a = %d :  \n\n", x);
        x = 0;
        i++ ;
    } while (i <= 1);
        
    printf("\n");
    system("pause");
}
 
bool IsNotZeroBoolInt(int x)
{
    bool zero = true;
    if (!x)
    {
        zero = true;
    }
    else
    {
        zero = false;
    }
 
    return zero;
}
 
 
bool isNotNegativeInt(int a)
{
    bool b = true;
    if (a < 0)
    {
        b = true;  //число отрицательное
    }
    else
    {
        b = false;
    }
    return b;
}
 
int enterNumberInt()
{
    int n;
    bool isZero = true;
    bool isNegative = true;
    printf("\nВведите число:  \n");
    cin >> n;
    printf("\n");
    //проверка числа на 0
    isZero = IsNotZeroBoolInt(n);
    isNegative = isNotNegativeInt(n);
    while (isZero || isNegative)
    {
        if (isZero)
        {
            printf("\nВведите число не равное нулю!\n");
            printf("\nВведите число:  \n");
            cin >> n;
            printf("\n");
            isZero = IsNotZeroBoolInt(n);
            isNegative = isNotNegativeInt(n);
        }
        else
        {
            printf("\nВведите положительное число!\n");
            printf("\nВведите число:  \n");
            cin >> n;
            printf("\n");
            isNegative = isNotNegativeInt(n);
            isZero = IsNotZeroBoolInt(n);
        }
    }
    return n;
}
 
int getNumberRandom(int a, int b)
{
    srand( time(NULL) );
    int n = 0;
    for (int i = a; i <= b; ++i)
    {
        n = a + rand() % (b - a + 1)  ;
    }
    return n;
}
 
void getEnterTwoNumberInt(int *a, int *b)
{
    *a = enterNumberInt();
    *b = enterNumberInt();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2018, 16:22
Ответы с готовыми решениями:

Случайное число при вызове конструктора
class a { public int id; public a() { Random rand = new Random(); id = rand.Next(0, 1000); } } static...

Класс - Ошибки при вызове методов: В вызове функции отсутствует список аргументов
Добрый вечер всем! При изучении и написании работы столкнулся с ошибкой от которой не могу избавиться. (Т.к. очень сильно плаваю в ООП)....

Автоматический вызов функции при вызове функции
Доброго времени суток! Есть задача по событие вызова некой функции назовем ее function1(), автоматически должна срабатывать функция...

3
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
23.01.2018, 16:24
masli, в теории, между вызовами может происходить слишком мало времени. Добавьте sleep(100) перед вызовом каждого srand. Люди, которые сумели выбраться из 1998, используют новые возможности языка
http://en.cppreference.com/w/cpp/numeric/random
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
23.01.2018, 16:33
Строчку 126
Цитата Сообщение от masli Посмотреть сообщение
srand( time(NULL) );
Нужно перенести в начало функции main, чтобы она вызывалась только ОДИН раз.
Ее задача - установить начальный отсчет генератора случайных чисел.
1
52 / 18 / 11
Регистрация: 27.03.2013
Сообщений: 789
23.01.2018, 16:35  [ТС]
Слабые изменения
C++
1
2
3
4
5
6
7
8
9
10
11
nt getNumberRandom(int a, int b)
{
    Sleep(300);
    srand( time(NULL) );
    int n = 0;
    for (int i = a; i <= b; ++i)
    {
        n = a + rand() % (b - a + 1)  ;
    }
    return n;
}
Меняется через 3 цифры и выдает все по порядку, например 4 цифры 6, потом 4 цифры 7 и т.д
Я поставил цикл на 10 шагов, чтобы это проверить

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
Нужно перенести в начало функции main, чтобы она вызывалась только ОДИН раз.
Ее задача - установить начальный отсчет генератора случайных чисел.
Да спасибо, так работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.01.2018, 16:35
Помогаю со студенческими работами здесь

Добавить аргумент при вызове функции при условии
Привет! Появился вопрос - можно ли добавить либо не добавлять аргумент при вызове функции исходя их каких-либо условий? То есть ...

При передаче функции готового списка - получаю ошибку TypeError: 'list' object is not callable
Вот как выглядит сама функция def Grad(self, a_SummErrors): The_dXdW = self.dXdW() return * The_dXdW for t in...

Ошибка при вызове функции
В функции NewWords вызывается функция correct,при отладке я не могу войти в эту функцию,к тому же потом не выводится элементы объекта...

Ошибка при вызове функции
Здравствуйте, у меня возникла проблема при вызове функции. Идея программы в том, что я вывожу график на оси, и, при нажатии на этот график...

Ошибка при вызове функции
При вызове функции выдает ошибку - Fatal error: Call to a member function get_results() on null in...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru