15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
1

как все это в подробностях работает?

05.09.2013, 16:28. Показов 2274. Ответов 36
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream> 
#include<cstdlib>
using namespace std;
 
int main() 
{
    setlocale(LC_ALL, "Russian");
    int i;
    int r;
    r=rand();
for(i=0;r<=20000;i++)
    r=rand();
cout<<"число равно"<<r<<".Оно было получено на шаге "<<i<<".";
 
return 0;
        
}
1
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2013, 16:28
Ответы с готовыми решениями:

Стек и куча: как все это работает?
Добрый вечер, подскажите пожалуйста хорошую литературу (сайты) по куче и стеку. Как оно все...

Как это работает? Я хочу спросить как работает C++ и где можно про него почитать
Привет, котоны. Заранее благодарю. Это будет моих общих вопросов нить, т.к. создавать целую ветку...

Русификация.Работает-супер! Обьяснитте, как это работает?
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; using namespace std; char*...

Как это работает?
#include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; int main() { char* s=new...

36
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
05.09.2013, 16:32 2
какая строчка вызывает затруднения, тут нет каких то сложных выражений даже
1
15 / 15 / 8
Регистрация: 15.08.2013
Сообщений: 190
05.09.2013, 16:33  [ТС] 3
почему если это рандом, цифры выскакивают одни и те же?
1
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
05.09.2013, 16:35 4
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
почему если это рандом, цифры выскакивают одни и те же?
потому что рандом так устроен, что бы он выкидывал разные цифры нужно еще припахать сюда часы (библиотеку time) и тогда можно будет выводить действительно разные цифры
2
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
05.09.2013, 16:39 5
Цитата Сообщение от VLK Посмотреть сообщение
нужно еще припахать сюда часы
рандом не зависит от "часов". Он зависит от seed'а, в качестве которого обычно подают текущее время, но это может быть любое другое (каждый раз разное) число.
1
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
05.09.2013, 16:41 6
Kastaneda, все правильно, он не зависит от часов, по этому (а может и не по этому) он выдает одни и те же значения, а если к нему прикрутить часы, то будут разные значения.
1
3 / 3 / 1
Регистрация: 15.08.2013
Сообщений: 30
05.09.2013, 16:43 7
Цитата Сообщение от VLK Посмотреть сообщение
Kastaneda, все правильно, он не зависит от часов, по этому (а может и не по этому) он выдает одни и те же значения, а если к нему прикрутить часы, то будут разные значения.

А что это за шаги ? "Было получено на шаге" ?? Шаг тоже рандомный ?
0
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
05.09.2013, 16:46 8

Не по теме:

Цитата Сообщение от SNIKERSMRG Посмотреть сообщение
А что это за шаги ?
Кто то еще слышал шаги?



Шаг это итерация цикла видимо, в данном случае цикл повторяется 20000 раз, значит у него 20000 шагов
1
3 / 3 / 1
Регистрация: 15.08.2013
Сообщений: 30
05.09.2013, 16:47 9
Цитата Сообщение от Raali Посмотреть сообщение

Не по теме:


Кто то еще слышал шаги?

C++
1
2
3
4
5
for(i=0;r<=20000;i++)
 r=rand();
 cout<<"число равно"<<r<<".Оно было получено на шаге "<<i<<".";
 
 return 0;
1
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
05.09.2013, 16:47 10
Книга - Как программировать на C++, автор Дейтел, страница 347 - пример программы, там при помощи time получаются разные значения, если кому то интересно.
1
3 / 3 / 1
Регистрация: 15.08.2013
Сообщений: 30
05.09.2013, 16:49 11
Цитата Сообщение от VLK Посмотреть сообщение
Книга - Как программировать на C++, автор Дейтел, страница 347 - пример программы, там при помощи time получаются разные значения, если кому то интересно.

Скажите пожалуйста что это за "получено на шаге" ??

Шаг это что за число ? и каким образом шаг определяется ? тоже рандомно ? оно все время другое ?
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
05.09.2013, 16:54 12
Цитата Сообщение от VLK Посмотреть сообщение
нига - Как программировать на C++, автор Дейтел, страница 347 - пример программы, там при помощи time получаются разные значения
Вот и покажи, что там пишут в этой книге. Для новой случайной последовательности должен быть задан сид. Обычно в качестве сида используют текущее время, но не обязательно, чтобы сид был именно временем!
1
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
05.09.2013, 16:58 13
Цитата Сообщение от SNIKERSMRG Посмотреть сообщение
Скажите пожалуйста что это за "получено на шаге" ??

Шаг это что за число ? и каким образом шаг определяется ? тоже рандомно ? оно все время другое ?
оператор for, это цикл, его условия - (i = 0; r <= 20000; i++)

i=0 - i равно 0 (изначально)
r<=20000 - цикл будет повторяться пока r меньше или равно 20000
i++ - с каждым шагом, кругом, повторение цикла i увеличивается на 1.

т.е. количество шагов тут должно быть от 0 до 20000 и учитываются они в переменной i, она и показывает количество шагов - cout<<"число равно"<<r<<".Оно было получено на шаге "<< i <<"."
1
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
05.09.2013, 16:58 14
Более того, для получения последовательности случайных чисел, srand должен быть вызван один раз!
При попытке вызывать srand(time(0)) в цикле, генератор будет сбрасываться в изначальное состояние функцией srand (учитывая, что значение time() в процессе выполнения программы особо не успевает измениться)
1
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
05.09.2013, 17:00 15
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Более того, для получения последовательности случайных чисел, srand должен быть вызван один раз!
При попытке вызывать srand(time(0)) в цикле, генератор будет сбрасываться в изначальное состояние функцией srand (учитывая, что значение time() в процессе выполнения программы особо не успевает измениться)
т.е. числа будут одинаковые?
1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
05.09.2013, 17:03 16
Цитата Сообщение от MRG_Serejka Посмотреть сообщение
for(i=0;r<=20000;i++)
r=rand();
тут все немного запутанней,
Цитата Сообщение от VLK Посмотреть сообщение
т.е. количество шагов тут должно быть от 0 до 20000
r <= 20000 означает что цикл остановится когда rand() > 20000
1
3 / 3 / 1
Регистрация: 15.08.2013
Сообщений: 30
05.09.2013, 17:05 17
Цитата Сообщение от Raali Посмотреть сообщение
тут все немного запутанней,

r <= 20000 означает что цикл остановится когда rand() > 20000


Количество шагов все время равно 3-ем ? чем это определяется ?
Миниатюры
как все это в подробностях работает?  
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
05.09.2013, 17:05 18
Цитата Сообщение от VLK Посмотреть сообщение
т.е. числа будут одинаковые?
http://ideone.com/wEZ5ZX
2
50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
05.09.2013, 17:08 19
Цитата Сообщение от SNIKERSMRG Посмотреть сообщение
Количество шагов все время равно 3-ем ? чем это определяется ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream> 
#include<cstdlib>
using namespace std;
 
int main() 
{
    setlocale(LC_ALL, "Russian");
    int i=0;
    int r=0;
    r=rand();
for(i=0;r<=10;i++)
{
    r=rand();
cout<<"число равно"<<r<<".Оно было получено на шаге "<<i<<".";
}
 
return 0;
        
}
Вот так сделай
1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
05.09.2013, 17:10 20
Цитата Сообщение от SNIKERSMRG Посмотреть сообщение
Количество шагов все время равно 3-ем ? чем это определяется ?
тем что rand() это функция, подчиняющаяся определенным правилам, как тот же синус например, который всегда при одном и том же аргументе будет возвращать одно и то же значение, разница лишь в том что мы можем задать для rand() сид - первоначальное зерно, которое осуществит сдвиг нашей функции на другие выходящие значения, ну и еще в том что rand не имеет аргументов, а при вызове сам сдвигается по "x" как бы.
Выходит если сид будет одинаковый то rand() будет давать одну и ту же последовательность разных значений, для этого сид привязывают к каким то случайным параметрам, таким как время например.
srand(time) - задать SID равный времени
1
05.09.2013, 17:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2013, 17:10
Помогаю со студенческими работами здесь

Как это работает?
Здравствуйте, можете, пожалуйста, поэтапно объяснить как работает приведенный ниже фрагмент кода?...

Как это работает?
#include &lt;iostream&gt; int *fun() { int a = 5; return &amp;a; } int main() { int *ptr = fun();...

Как это работает?
Читаю я кое какой &quot;учебник&quot;, и в нём появился такой вот кусок кода int input (tank&amp; t, char map)...

Как это работает?
Не могу понять, как это работает: #include &lt;iostream&gt; using namespace std; int main() { ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru