Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
sergey.shuvalov
-6 / 1 / 5
Регистрация: 06.11.2011
Сообщений: 269
#1

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

28.09.2012, 14:51. Просмотров 1109. Ответов 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;
 
 
 
 
}

http://www.cyberforum.ru/cpp-beginners/thread1360382.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2012, 14:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Неправильно работает генератор случайных чисел (C++):

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

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

Генератор случайных чисел
Вот написал программу, которая генерирует матрицу 9*9. В каждой строке - от 1...

Генератор случайных чисел
Добрый вечер! Собственно-то тако задание: необходимо правильно задать параметры...

Генератор случайных чисел
Еще ни разу не использовал rand(), знаю что перед ним нужно srand(time(NULL)),...

12
NoMasters
Псевдослучайный
1909 / 1120 / 90
Регистрация: 13.09.2011
Сообщений: 3,178
28.09.2012, 14:54 #2
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
CHD=CHS/100;
целочисленное деление
1
Elfenlide
23 / 23 / 11
Регистрация: 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
Эксперт С++
2907 / 1256 / 114
Регистрация: 27.05.2008
Сообщений: 3,451
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 / 11
Регистрация: 15.04.2012
Сообщений: 183
28.09.2012, 14:57 #5
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
cout<<setw(5)<<CHD<<endl;
чтобы работал setw(5)
нужно подключить #include <iomanip>
1
alsav22
5438 / 4833 / 831
Регистрация: 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
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
28.09.2012, 15:11 #7
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
CHD=CHS/100;
Согласно типу левого операнда, деление целочисленное.
1
sergey.shuvalov
-6 / 1 / 5
Регистрация: 06.11.2011
Сообщений: 269
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 / 34
Регистрация: 23.05.2009
Сообщений: 275
28.09.2012, 15:18 #9
C++
1
 srand((unsigned)time(NULL));
добавляли?
1
Elfenlide
23 / 23 / 11
Регистрация: 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 / 5
Регистрация: 06.11.2011
Сообщений: 269
28.09.2012, 15:29  [ТС] #11
#include "stdafx.h" - в CODE BLOCKS пишет:

error: stdafx.h: No such file or directory
0
Elfenlide
23 / 23 / 11
Регистрация: 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
5438 / 4833 / 831
Регистрация: 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
Привет! Вот еще темы с решениями:

Генератор случайных чисел
Пишу курсовую по криптографии, для генерации ключей, естественно, нужен...

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

генератор случайных чисел
Всем доброго времени суток, вот решил написать генератор чисел длины 768 бит,...

Генератор случайных чисел
Добрый день!У меня есть код #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include...


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

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

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