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

Неправильно работает генератор случайных чисел - C++

Восстановить пароль Регистрация
 
sergey.shuvalov
-2 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 259
28.09.2012, 14:51     Неправильно работает генератор случайных чисел #1
Подскажите, кто разбирается, почему при генерации случайных чисел первое значение равно нулю ?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stdlib.h>
 
 
int CHS=0;
float CHD=0;
 
for(int i=0;i<10;i++)
{
 
 
    
        CHS = 1 + rand() % 10000;CHD=CHS/100;
       
 
 
    cout<<setw(5)<<CHD<<endl;
 
 
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2012, 14:51     Неправильно работает генератор случайных чисел
Посмотрите здесь:

C++ Генератор случайных чисел
Метод-Монте карло. Не работает генератор случайных чисел C++
Генератор случайных чисел C++
C++ Генератор случайных чисел
C++ генератор случайных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
28.09.2012, 14:54     Неправильно работает генератор случайных чисел #2
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
CHD=CHS/100;
целочисленное деление
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
28.09.2012, 14:54     Неправильно работает генератор случайных чисел #3
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Подскажите, кто разбирается, почему при генерации случайных чисел первое значение равно нулю ?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stdlib.h>
 
 
int CHS=0;
float CHD=0;
 
for(int i=0;i<10;i++)
{
 
 
    
        CHS = 1 + rand() % 10000;CHD=CHS/100;
       
 
 
    cout<<setw(5)<<CHD<<endl;
 
 
 
 
}
Подключи #include <random>
и можешь подключить #include <time.h>
и сделать так
srand(time(NULL))%10000;
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
28.09.2012, 14:54     Неправильно работает генератор случайных чисел #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    int CHS=0;
    float CHD=0;
    
    srand((unsigned)time(NULL));
    
    for(int i=0;i<10;i++)
    {
        CHS = 1 + rand() % 10000;
        CHD=CHS/100.0;
        cout<<setw(5)<<CHD<<endl;
    }
}
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
28.09.2012, 14:57     Неправильно работает генератор случайных чисел #5
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
cout<<setw(5)<<CHD<<endl;
чтобы работал setw(5)
нужно подключить #include <iomanip>
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.09.2012, 15:00     Неправильно работает генератор случайных чисел #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
 
int main()
{ 
 
int CHS = 0;
float CHD = 0;
 
for(int i = 0; i < 10; i++)
{
 
   CHS = 1 + (rand() % 10000);
   cout << CHS << endl; // первое значение меньше 100
   CHD = CHS / 100;  // поэтому при делении получится 0
   cout << setw(5) << CHD << endl;
}
 
    cin.get();
    return 0;
 }
Чтобы значения были разными - 3 пост.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.09.2012, 15:11     Неправильно работает генератор случайных чисел #7
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
CHD=CHS/100;
Согласно типу левого операнда, деление целочисленное.
sergey.shuvalov
-2 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 259
28.09.2012, 15:15  [ТС]     Неправильно работает генератор случайных чисел #8
Всё сделал, сделал, как посоветовали, но первое значение в результате нескольких запусков программы не меняется или меняется на десятые доли. Почему так происходит ?


C++
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
#include <iostream>
#include <fstream>
#include <iomanip>
#include <conio.h.>
#include<windows.h>
#include<cstdlib>
#include <time.h>
#include <ctime>h
 
using namespace std;
 
int main()
{
 
float CHS;
float CHD;
 
 
 
 
    srand((unsigned)time(NULL));
 
    for(int i=0;i<10;i++)
    {
        CHS = 1 + rand() % 10000;
        CHD=CHS/100.0;
        cout<<setw(5)<<CHD<<endl;
    }
 
 
 
    
 
    return 0;
}
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
28.09.2012, 15:18     Неправильно работает генератор случайных чисел #9
C++
1
 srand((unsigned)time(NULL));
добавляли?
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
28.09.2012, 15:18     Неправильно работает генератор случайных чисел #10
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
Всё сделал, сделал, как посоветовали, но первое значение в результате нескольких запусков программы не меняется или меняется на десятые доли. Почему так происходит ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// learncpp.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
int main()
{
    int CHS=0;
    float CHD=0;
 
    srand((unsigned)time(NULL));
 
    for(int i=0;i<10;i++)
    {
        CHS = 1 + rand() % 10000;
        CHD=CHS/100.0;
        cout<<setw(5)<<CHD<<endl;
    }
}
Так вот всё вроде нормально меняется
sergey.shuvalov
-2 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 259
28.09.2012, 15:29  [ТС]     Неправильно работает генератор случайных чисел #11
#include "stdafx.h" - в CODE BLOCKS пишет:

error: stdafx.h: No such file or directory
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
28.09.2012, 15:40     Неправильно работает генератор случайных чисел #12
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
#include "stdafx.h" - в CODE BLOCKS пишет:

error: stdafx.h: No such file or directory
Удалите эту строчку, вам она не нужна.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2012, 15:55     Неправильно работает генератор случайных чисел
Еще ссылки по теме:

C++ Генератор случайных чисел
C++ Не работает генератор случайных чисел

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.09.2012, 15:55     Неправильно работает генератор случайных чисел #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
int main()
{
 
 int CHS;
 
 srand((unsigned)time(NULL));
 
 for(int i = 0;i < 10; i++)
 {
      CHS = 1 + rand() % 100;
      cout << setw(5) << CHS << endl;
 }
 
 cin.get();
 return 0;
}
Yandex
Объявления
28.09.2012, 15:55     Неправильно работает генератор случайных чисел
Ответ Создать тему
Опции темы

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