Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
lavrik
10 / 10 / 1
Регистрация: 24.02.2011
Сообщений: 650
#1

rand() - C++

14.10.2012, 10:47. Просмотров 1739. Ответов 3
Метки нет (Все метки)

начал учить си++, наткнулся на такую штуку...
Накидал простую программку (консольную) и увидел что датчик случ. чисел выдает нифига не случайные числа!!!

C++ (Qt)
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
#include <iostream>   // Заголовок для подключения системы ввода/вывода
#include <cstdlib>
using namespace std;  // Использовать пространство имен std
 
void wait();
 
 
 
 
int main()
{
    int magik, my;
 
    magik = rand();
 
    cout << "Введи число \n";
    cin >> my;
    
    if (magik==my)
       {
       cout << "Угадал";
       }
       else
       {
       cout << "не угадал - ";
       if (my > magik)
          {
          cout << "Слишком много \n";
          }
          else
          {
          cout << "Слишком мало \n";
          }
       cout << "Рандомное число - " << magik;
       }
    
    return 0;
}

число my ВСЕГДА равняется 41. ПОЧЕМУ???? я что-то ни так делаю???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2012, 10:47     rand()
Посмотрите здесь:

C++ rand()
rand C++
C++ не работает rand()
rand C++
C++ оператор rand
Функция rand() C++
rand() между 0 и 1 C++
C++ rand от 1 до 16
rand()%(-20)%(20); C++
rand C++
rand() C++
Rand() C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
14.10.2012, 10:52     rand() #2
Добавьте в начало main srand(time(0)); и подключите заголовок #include <ctime>
ExpressS
 Аватар для ExpressS
5 / 8 / 0
Регистрация: 30.07.2012
Сообщений: 235
14.10.2012, 10:54     rand() #3
Цитата Сообщение от lavrik Посмотреть сообщение
начал учить си++, наткнулся на такую штуку...
Накидал простую программку (консольную) и увидел что датчик случ. чисел выдает нифига не случайные числа!!!

C++ (Qt)
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
#include <iostream>   // Заголовок для подключения системы ввода/вывода
#include <cstdlib>
using namespace std;  // Использовать пространство имен std
 
void wait();
 
 
 
 
int main()
{
    int magik, my;
 
    magik = rand();
 
    cout << "Введи число \n";
    cin >> my;
    
    if (magik==my)
       {
       cout << "Угадал";
       }
       else
       {
       cout << "не угадал - ";
       if (my > magik)
          {
          cout << "Слишком много \n";
          }
          else
          {
          cout << "Слишком мало \n";
          }
       cout << "Рандомное число - " << magik;
       }
    
    return 0;
}

число my ВСЕГДА равняется 41. ПОЧЕМУ???? я что-то ни так делаю???
C++
1
2
3
4
int s;
srand(time(NULL));
for (int i=0;i<10; i++)
{s = rand() % 100 + 1;}
от 1 до 100
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
14.10.2012, 11:49     rand() #4
Цитата Сообщение от lavrik Посмотреть сообщение
число my ВСЕГДА равняется 41. ПОЧЕМУ????
Потому что rand() на самом деле выдает псевдослучайные числа. Внутри функции заложен определенный алгоритм, по которому эти числа берутся. Есть функция srand(), которая позволяет инициализировать начальное значение для генератора. В качестве аргумента в нее по традиции передается значение, возвращаемое функцией time(). Таким образом при каждом запуске программы это будет новое значение.
Yandex
Объявления
14.10.2012, 11:49     rand()
Ответ Создать тему
Опции темы

Текущее время: 15:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru