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

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

28.09.2012, 14:51. Просмотров 1133. Ответов 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
Ответы с готовыми решениями:

Не работает генератор случайных чисел
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace...

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

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

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

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

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
Эксперт С++
2912 / 1261 / 114
Регистрация: 27.05.2008
Сообщений: 3,464
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
5442 / 4837 / 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 / 1765 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
28.09.2012, 15:11 7
Цитата Сообщение от sergey.shuvalov Посмотреть сообщение
CHD=CHS/100;
Согласно типу левого операнда, деление целочисленное.
1
sergey.shuvalov
-5 / 2 / 0
Регистрация: 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
-5 / 2 / 0
Регистрация: 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
5442 / 4837 / 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

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

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

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


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

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

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