С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
14 / 13 / 5
Регистрация: 24.02.2011
Сообщений: 714
1

rand()

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

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

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. ПОЧЕМУ???? я что-то ни так делаю???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2012, 10:47
Ответы с готовыми решениями:

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

Rand()
metka: r1=rand()%2; r2=rand()%2; if(r1==a &amp;&amp; r2==b)goto metka; else arr=='O'; ...

rand
srand(time(NULL)); int s = rand()%1000 +1; генерирует бред вроде 3,4,7,10,14,19,21,26,29... ...

rand
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; // гениратор...

3
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
14.10.2012, 10:52 2
Добавьте в начало main srand(time(0)); и подключите заголовок #include <ctime>
0
5 / 8 / 2
Регистрация: 30.07.2012
Сообщений: 235
14.10.2012, 10:54 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
0
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
14.10.2012, 11:49 4
Цитата Сообщение от lavrik Посмотреть сообщение
число my ВСЕГДА равняется 41. ПОЧЕМУ????
Потому что rand() на самом деле выдает псевдослучайные числа. Внутри функции заложен определенный алгоритм, по которому эти числа берутся. Есть функция srand(), которая позволяет инициализировать начальное значение для генератора. В качестве аргумента в нее по традиции передается значение, возвращаемое функцией time(). Таким образом при каждом запуске программы это будет новое значение.
0
14.10.2012, 11:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.10.2012, 11:49
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru