Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
#1

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

28.09.2012, 14:51. Просмотров 1056. Ответов 12
Метки нет (Все метки)

Подскажите, кто разбирается, почему при генерации случайных чисел первое значение равно нулю ?


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;
 
 
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2012, 14:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неправильно работает генератор случайных чисел (C++):

Не работает генератор случайных чисел - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int main(){ int a; srand(time(0));...

Метод-Монте карло. Не работает генератор случайных чисел - C++
Аглоритм простой: Координаты - случайные величины. При каждой итерации проверяется пододает ли случайная точка из куба 1*1*1 в заданную...

Генератор случайных чисел - C++
Реализовать генератор случайных числе в диапазоне от нуля до единицы. После генерации случайного числа, записывать 0 или 1 (в соответствии...

Генератор случайных чисел - C++
Здравствуйте! Кто-нибудь объясните пожалуйста. Вот есть функция rand(). Она возвращает псевдослучайные числа от нуля до RAND_MAX. А можно...

Генератор случайных чисел - C++
Еще одна тема о генераторе. Только вопрос, на который я пока не нашел ответа в других темах. Как сгенерировать случайное число в двух или...

Генератор случайных чисел - C++
Здраствуййте :( int a=rand()%10000; std::cout &lt;&lt; a; getchar(); return 0; int a=rand()%1000; std::cout &lt;&lt; a; getchar();...

12
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,143
28.09.2012, 14:54 #2
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
CHD=CHS/100;
целочисленное деление
1
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;
1
CheshireCat
Эксперт С++
2895 / 1244 / 78
Регистрация: 27.05.2008
Сообщений: 3,398
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;
    }
}
1
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>
1
alsav22
5426 / 4821 / 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 пост.
1
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
28.09.2012, 15:11 #7
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
CHD=CHS/100;
Согласно типу левого операнда, деление целочисленное.
1
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
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;
}
0
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
28.09.2012, 15:18 #9
C++
1
 srand((unsigned)time(NULL));
добавляли?
1
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;
    }
}
Так вот всё вроде нормально меняется
1
sergey.shuvalov
-6 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 268
28.09.2012, 15:29  [ТС] #11
#include "stdafx.h" - в CODE BLOCKS пишет:

error: stdafx.h: No such file or directory
0
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
Удалите эту строчку, вам она не нужна.
1
alsav22
5426 / 4821 / 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;
}
1
28.09.2012, 15:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2012, 15:55
Привет! Вот еще темы с ответами:

Генератор случайных чисел - C++
Всем привет, вот такая задачка. &quot;Датчики случайных чисел можно привлекать при подборе проверочных исходных данных для программ. а) 25...

Генератор случайных чисел - C++
Помогите написать программу, которая генерировала бы случайные числа мультипликативным конгруэнтным методом. Нужно использовать такое...

Генератор случайных чисел - C++
Здравствуйте, для программы мне требуется генератор, который будет задавать рандомно число, но данное число должно быть с определенными...

Генератор случайных чисел - C++
Добрый день!У меня есть код #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;ctime&gt; char randSym() { ...


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

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

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