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

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

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

rand() - C++

14.10.2012, 10:47. Просмотров 1894. Ответов 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()
Посмотрите здесь:

Rand() - C++
Ребята срочно nомогите , как сгенерировать с nомощью функции rand() рандомные числа 0 или 1 ?

rand() - C++
Как записать чтобы rand() возвращало true и false. Или подскажите другой способ. Мне нужно заполнить 3-х мерный массив.

rand() - C++
генератор случайных чисел rand() подскажите пожелуста как работает ета штука. что означает %200, %200-100. какой принцип роботы

rand()%(-20)%(20); - C++
Нужно сорт случ числа от -20 до 20 Делаю так rand()%(-20)%(20); получаю числа от 0 до 20, а мне нужно от -20 ;

rand - C++
srand(time(NULL)); int s = rand()%1000 +1; генерирует бред вроде 3,4,7,10,14,19,21,26,29... как сделать чтобы значения были...

rand от 1 до 16 - C++
Вопрос в том как в функции rand() на c++ задать диапазон чисел от 1 до 16

Rand() - C++
metka: r1=rand()%2; r2=rand()%2; if(r1==a &amp;&amp; r2==b)goto metka; else arr=='O'; Собсно-это кусок кода...

rand - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; // гениратор случайных чисел using namespace std; ...

rand - C++
всем привет) что означает вот это строка double value = (rand()%1000)/100.0 - 5.0; и чем она отличается от этой double value =...

rand() в потоке - C++
Запускается n потоковых функций, каждый из них приостанавливается во время своего выполнения, а в главное программе должен перезапускаться....

Функция rand - C++
Помогите написать программу) В цикле, используя функцию rand генерировать числа в диапазоне от 0 до 9. Из этих чисел составить цеиое...

Вероятность в rand() - C++
Хочу поинтересоваться функция rand() с привязкой ко времени, то у нее вероятность будет одинаковая или иной, тогда как сделать что бы...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1428 / 765 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
14.10.2012, 10:52     rand() #2
Добавьте в начало main srand(time(0)); и подключите заголовок #include <ctime>
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
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
14.10.2012, 11:49     rand() #4
Цитата Сообщение от lavrik Посмотреть сообщение
число my ВСЕГДА равняется 41. ПОЧЕМУ????
Потому что rand() на самом деле выдает псевдослучайные числа. Внутри функции заложен определенный алгоритм, по которому эти числа берутся. Есть функция srand(), которая позволяет инициализировать начальное значение для генератора. В качестве аргумента в нее по традиции передается значение, возвращаемое функцией time(). Таким образом при каждом запуске программы это будет новое значение.
Yandex
Объявления
14.10.2012, 11:49     rand()
Ответ Создать тему
Опции темы

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