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

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

24.07.2014, 11:49. Показов 32036. Ответов 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
Ответ Создать тему
Новые блоги и статьи
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