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

Заполнить массив случайными значениями - C++

Восстановить пароль Регистрация
 
Василицк
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 18
04.05.2013, 16:07     Заполнить массив случайными значениями #1
Написать программу, в которой с помощью генератора случайных значений сформировать 4 массива V1, V2, V3, V4, каждый из которых содержит 9 целочисленных значений. Элементы векторов формируются в диапазоне [-2*m; 3*m], где целое значение m>4 вводится с клавиатуры.
Начал писать задание, но почему то при заполнении массива, все числа одинаковые генерируются, помогите пожалуйста.
Вот мои каки маляки
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
#include "iostream"
#include "windows.h"
#include "stdlib.h"
#include "time.h"
using namespace std;
    int main ()
{
    int u,i,o,p,m; 
    double v1[9],v2[9],v3[9],v4[9]; 
    do
    {
        cout << "input m" << " ";
        cin >> m;
    if  ( m < 4 ) 
        cout << "exception, input correct value m \n";
    }
    while (m < 4) ;
    int q;
        q=9;
        cout << "array v1";
    
    for (u=0; u<q; u++)
    {
        srand((unsigned)time(NULL));
        v1[u]=double(rand()/RAND_MAX*(3*m-2*m)+2*m) ;
            cout << " " << v1[u] << ' ' ;
    }
 
 
    system ("pause");
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2013, 16:07     Заполнить массив случайными значениями
Посмотрите здесь:

C++ Объявить массив целых чисел и заполнить его случайными значениями.
Заполнить массив случайными неповторяющимися значениями C++
C++ Заполнить масив случайными значениями
C++ Объявить массив целых чисел и заполнить его случайными значениями
C++ Заполнить массив случайными значениями, лежащими в диапазоне от 50 до 100
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
04.05.2013, 16:41     Заполнить массив случайными значениями #2
после int main(){ пропиши srand(time(NULL));
Василицк
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 18
04.05.2013, 16:43  [ТС]     Заполнить массив случайными значениями #3
не берет почему то, как было так и осталось
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
04.05.2013, 16:51     Заполнить массив случайными значениями #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Попробуйте так:
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
#include "iostream"
#include "windows.h"
#include "stdlib.h"
#include "time.h"
using namespace std;
    int main ()
{
    srand(time(NULL));
    int u,i,o,p,m; 
    double v1[9],v2[9],v3[9],v4[9]; 
    do
    {
        cout << "input m" << " ";
        cin >> m;
    if  ( m < 4 ) 
        cout << "exception, input correct value m \n";
    }
    while (m < 4) ;
    int q;
        q=9;
        cout << "array v1";
    
    for (u=0; u<q; u++)
    {
        
        v1[u]=(double)rand()/RAND_MAX*(3.0*m-2.0*m)+2.0*m ;
            cout << " " << v1[u] << ' ' ;
    }
 
 
    system ("pause");
    return 0;
}
Василицк
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 18
04.05.2013, 16:56  [ТС]     Заполнить массив случайными значениями #5
так генерируется, а подскажите пожалуйста с целочисленными значениями как такое же сделать?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
04.05.2013, 16:58     Заполнить массив случайными значениями #6
Цитата Сообщение от Василицк Посмотреть сообщение
такое же сделать?
такое же это что?
FreeMan108
 Аватар для FreeMan108
120 / 120 / 6
Регистрация: 04.03.2013
Сообщений: 368
04.05.2013, 16:58     Заполнить массив случайными значениями #7
1. Пишите srand не в цикле, а после main.
2. Попробуйте заменить

C++
1
v1[u]=double(rand()/RAND_MAX*(3*m-2*m)+2*m) ;
на

C++
1
v1[u]=rand()%(5*m + 1) - 2*m;
Василицк
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 18
04.05.2013, 17:03  [ТС]     Заполнить массив случайными значениями #8
Добавлено через 2 минуты
Цитата Сообщение от FreeMan108 Посмотреть сообщение
1. Пишите srand не в цикле, а после main.
2. Попробуйте заменить

C++
1
v1[u]=double(rand()/RAND_MAX*(3*m-2*m)+2*m) ;
на

C++
1
v1[u]=rand()%(5*m + 1) - 2*m;
так работает)
спасибо
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
04.05.2013, 17:03     Заполнить массив случайными значениями #9
Цитата Сообщение от Василицк Посмотреть сообщение
такое же условие только c Int вместо double
а вы вдумайтесь в формулу:
C++
1
rand()/RAND_MAX*(3*m-2*m)+2*m
rand()/RAND_MAX скорее всего равно 0.
Соответственно из всей формулы получаем только 2*m - поэтому числа и одинаковые у Вас
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2013, 17:08     Заполнить массив случайными значениями
Еще ссылки по теме:

C++ Как создать динамический трехмерный массив и заполнить его случайными значениями?
Заполнить массив случайными значениями C++
Объявить массив из 20 элементов и заполнить его случайными значениями от -6 до 15 C++

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

Или воспользуйтесь поиском по форуму:
Василицк
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 18
04.05.2013, 17:08  [ТС]     Заполнить массив случайными значениями #10
Цитата Сообщение от Croessmah Посмотреть сообщение
а вы вдумайтесь в формулу:
C++
1
rand()/RAND_MAX*(3*m-2*m)+2*m
rand()/RAND_MAX скорее всего равно 0.
Соответственно из всей формулы получаем только 2*m - поэтому числа и одинаковые у Вас
да, я это заметил

Добавлено через 3 минуты
так как только учусь, смотрел по шаблону
C++
1
2
3
4
int Random(int min,int max)
{
   retrun ( rand()%(max-min)+min) ;
}
Yandex
Объявления
04.05.2013, 17:08     Заполнить массив случайными значениями
Ответ Создать тему
Опции темы

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