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

Как сделать чтобы каждый раз рандомное число менялось?

24.07.2014, 11:49. Показов 32388. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос таков: Как сделать чтобы каждый раз рандомное число менялось? И каким образом или на каком этапе "выбирается" это число, т.к сколько бы раз я не компилировал всегда выводится 42.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int n,m;
n=rand()%100+1;
cout<<"Enter number m=";
cin>>m;
cout<<"n="<<n<<": ";
if(m>n) cout<<"your number is greater!\n";  
else if (n>m) cout<<"your number is less!\n";
else cout<<"you have guessed right!\n";
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2014, 11:49
Ответы с готовыми решениями:

Как сделать так, чтобы каждый раз по разному шифровалось
Привет всем!!! Проблема состоит в следующим, работает программа все как надо, но требуют от меня чтобы, когда я в вожу текст программы(...

Как сделать чтобы при создании массива его имя менялось?
Вот есть такая функция: void UniqueCollection (int x1, int y1, int x2, int y2) { int Values = 4; int *Collection; Collection =...

Можно сделать так чтобы каждый раз не вводить матрицу?
Надо написать программу,но сначала я хочу попробовать на примере, но матрица слишком большая и хотелось бы чтоб не каждый раз набирать...

18
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.07.2014, 11:52
srand тебе в руки
0
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
24.07.2014, 12:17  [ТС]
спс, но все равно как я понял тут без time не обойтись
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.07.2014, 12:30
Цитата Сообщение от Fobos315 Посмотреть сообщение
но все равно как я понял тут без time не обойтись
srand() инициализирует генератор псевдо-случайных чисел переданным числом.
Если нужно получать разные последовательности м/у запусками, то первое что приходит на ум, это, конечно же, время. Но можно использовать и любое другое значение, которое может меняться от запуска к запуску. Например:
- попросить пользователя ввести число;
- время пинга до какого-нибудь сервера;
- размер свободной памяти в системе;
... и т.д.
1
 Аватар для CyberSolver
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
24.07.2014, 12:40
Именно. Стандартный способ - вызов
C++
1
srand(time(NULL));
Не забывайте - числа псевдослучайные, так что rand() всегда будет возвращать одно и то же. Единственный способ - как-то менять затравку, на что и нужен вызов time.

Всегда ваш К.О.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.07.2014, 12:41
Цитата Сообщение от Fobos315 Посмотреть сообщение
но все равно как я понял тут без time не обойтись
И? Не обходись без time, в чем проблема?
0
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
24.07.2014, 14:07  [ТС]
Тогда с чем связано то что у меня получилось точь в точь как и написано. Вероятность совпадения из 8 случаев что будет тоже самое очень маленькая. Почему они посчитали что вероятность что будет 1 = 0.25. Может речь идет о каких либо приоритетах? Причем вывод был сделан после запуска программы а ведь могло из 8 раз примерно раз 5 показать единицу, это не значит что шанс что будет единица выше чем 2 и 3. ? см. вложение
Миниатюры
Как сделать чтобы каждый раз рандомное число менялось?  
0
34 / 34 / 8
Регистрация: 13.06.2014
Сообщений: 509
24.07.2014, 14:15
Fobos315, простите, что?
Как не сложно догадаться вероятность была посчитана исходя из одного запуска программы и не по теории вероятности, а по факту
Т.к. из 8 раз единица выпала 2 раза, то вероятность 25% или же просто 0.25
Но суть вопроса я все равно не понял
0
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
24.07.2014, 17:42  [ТС]
frostyfull суть в том как могло получиться что пример приведенный в статье про рамндомное число полностью совпал с моим (т.е ответы одни и те же из 8 предложенных)
0
34 / 34 / 8
Регистрация: 13.06.2014
Сообщений: 509
24.07.2014, 17:56
Fobos315, при написании такой же программы, если рандом работает правильно, у тебя шанс около 33% получить такой же ответ, а вот если при каждом запуске программы точно также получается, то это уже косяк
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.07.2014, 18:00
Цитата Сообщение от frostyfull Посмотреть сообщение
то это уже косяк
Почему косяк? если srand() не вызывается в разным значением при каждом запуске, то логично получать каждый раз ту же самую последовательность.
Если стандартную библиотеку конечно не поменять на другую между запусками
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
24.07.2014, 18:01
Fobos315, вам-же уже ответили:
Как сделать чтобы каждый раз рандомное число менялось?
0
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
24.07.2014, 18:32  [ТС]
Tulosba это понятно. Мне не понятно то что когда привели пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    cout << "1-random number = " << 1 + rand() % 3 << endl; // первый запуск генератора случайных чисел
    cout << "2-random number = " << 1 + rand() % 3 << endl; // второй запуск генератора случайных чисел
    cout << "3-random number = " << 1 + rand() % 3 << endl; // третий запуск генератора случайных чисел
    cout << "4-random number = " << 1 + rand() % 3 << endl; // четвёртый запуск генератора случайных чисел
    cout << "5-random number = " << 1 + rand() % 3 << endl; // пятый запуск генератора случайных чисел
    cout << "6-random number = " << 1 + rand() % 3 << endl; // шестой запуск генератора случайных чисел
    cout << "7-random number = " << 1 + rand() % 3 << endl; // седьмой запуск генератора случайных чисел
    cout << "8-random number = " << 1 + rand() % 3 << endl; // восьмой запуск генератора случайных чисел
    system("pause");
    return 0;
}
У них получилось: 3,3,2,2,3,2,1,1.
Когда запустил я, получилось тоже самое. Почему так? Почему не 1,2,3,1,1,2...
Понятно что при повторном запуске я буду получать тоже самое.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.07.2014, 18:39
Fobos315, разные компиляторы с разными библиотеками могут давать разные результаты. И наоборот: одинаковые либы - одинаковые результаты.
1
34 / 34 / 8
Регистрация: 13.06.2014
Сообщений: 509
25.07.2014, 10:38
Цитата Сообщение от Tulosba Посмотреть сообщение
Почему косяк? если srand() не вызывается в разным значением при каждом запуске, то логично получать каждый раз ту же самую последовательность.
Если стандартную библиотеку конечно не поменять на другую между запусками
Я просто не знаю как у тебя, но когда я писал не так давно программу с рандомом, у меня все работало прекрасно, и при каждом запуске все значения были разными
Если сильно надо могу прошерстить свои исходники и кинуть код как я делал рандом
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
25.07.2014, 10:50
Цитата Сообщение от frostyfull Посмотреть сообщение
и при каждом запуске все значения были разными
Без вызова srand()?
0
34 / 34 / 8
Регистрация: 13.06.2014
Сообщений: 509
25.07.2014, 11:55
Tulosba, я не смог найти старый исходник, но накорябал простейшую программу для проверки работы рандома
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <conio.h>
#include <time.h>
#include <iostream>
using namespace std;
 
void main(void)
{
    int a[10];
    srand(time(NULL));
    for (int i = 0; i < 10; i++)
    {
        a[i] = rand() % 10;
        cout << a[i] << endl;
    }
    _getch();
}
все прекрасно пашет
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
25.07.2014, 12:07
Цитата Сообщение от frostyfull Посмотреть сообщение
все прекрасно пашет
Вы мои сообщения вообще читаете?
Цитата Сообщение от Tulosba Посмотреть сообщение
Без вызова srand()?
0
34 / 34 / 8
Регистрация: 13.06.2014
Сообщений: 509
25.07.2014, 14:50
Tulosba, да я уже не помню, в чем суть темы была) а перечитывать все посты не особо хочется

Добавлено через 6 минут
дак я вот не понял, у автора боязнь функции srand() всесте с таймом или что?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.07.2014, 14:50
Помогаю со студенческими работами здесь

Вывод значения элемента массива рандомное число раз
Как вывести значение элемента массива i раз, при условии что i это рандом с заданным диапазоном. пробовал так: if (i &gt; 0) ...

Как сделать чтобы анимация запускалась каждый раз после нажатия на кнопку, а не один раз?
Как сделать чтобы анимация запускалась каждый раз после нажатия на кнопку, а не один раз? &lt;style&gt; .main { ...

Как сделать так чтобы функция каждый раз возвращала новое значение
Дана вот такая функция и она возвращает случайное число(Она работает) function montekarlo(diap1: double; diap2: double): double; var...

Как сделать, чтобы программа каждый раз при запуске загружала новую картинку?
Игра перестановки. При запуске загружается картинка, но одна. А чтобы каждый раз другую картинку брал что и где надо прописать? Может в...

Как задать, чтобы число x менялось от 0 до +бесконечности
Здравствуйте форумчане. СТрою у примеру график ряда Фурье, требуется чтобы число менялось начиналось с нуля и до бесконечности. И были...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru