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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
#1

Заполнить контейнер случайными числами - C++

21.08.2012, 00:34. Просмотров 1145. Ответов 9
Метки нет (Все метки)

ТОлько начинаю свой тернистый путь, многие с этого начинали так что не надо судить строго мой нубовский код! идея такова что бы контейнер заполняется числами до 1000 они там перемешиваются и выводится число под номером 1, проблема в том что при каждом запуске программа выдаёт одно и тоже число, мне кажется, что после вывода числа нужно как бы очистить контейнер от тех 1000 перемешаных чисел, что бы в следуший раз оно генерировалось заново. Если я на правильном пути подскажите как его очистить? НЕт - что нужно исправить?



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
 
using namespace std;
int main() {
vector<int> s;
for( int i=0; i<1000; i++)
s.push_back(i);
vector<int> :: iterator ini, end;
ini = s.begin();
end = s.end();
random_shuffle(ini, end);
cout<< s[1] << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2012, 00:34     Заполнить контейнер случайными числами
Посмотрите здесь:

Заполнить матрицу случайными числами - C++
Подскажите, пожалуйста, как заполнить матрицу случайными числами от 50 до -50. МАТРИЦА cout &lt;&lt; &quot;\nEnter rows size: &quot;; cin...

Заполнить стек случайными числами - C++
Здравствуйте, форумчане. Прошу помощи в исправлении задачи. У меня есть программа, которая действует так: читает символ с клавиатуры...

Заполнить miltiset случайными числами - C++
Заполнить контейнер мультисет &lt;инт&gt; случайными целыми числами от 0 до 20. Подсчитать количество повторений каждого элемента множества. ...

Заполнить строку случайными числами от 1 до 10 - C++
Задача состоит в заполнении строкового массива случайными числами. Вот что у меня #include &lt;iostream&gt; #include &lt;ctime&gt; using...

Заполнить матрицу случайными числами - C++
Заполнить матрицу случайными числами. Показать главную и побочную диагонали симметрично относительно вертикальной оси.Помогите пожалуйста!!!

Заполнить матрицу случайными числами - C++
Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой стрелки.

Заполнить массивы случайными числами - C++
я &quot;типа&quot; написал программку умножающую два массива, но мне нужно чтоб массивы А и В заполнились случайными числами от нуля до десяти....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
21.08.2012, 00:49     Заполнить контейнер случайными числами #2
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <ctime>
 
using namespace std;
int main() {
srand(time(0));
vector<int> s;
for( int i=0; i<1000; i++)
s.push_back(i);
vector<int> :: iterator ini, end;
ini = s.begin();
end = s.end();
random_shuffle(ini, end);
cout<< s[1] << endl;//В с++ нумерация массивов идёт с нуля. Если надо вывести первый элемент, то s[0]
}
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
21.08.2012, 00:51  [ТС]     Заполнить контейнер случайными числами #3
Цитата Сообщение от CEBEP Посмотреть сообщение
srand(time(0));
что оно даёт?)что бы знать на будщее
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
21.08.2012, 00:55     Заполнить контейнер случайными числами #4
http://cppstudy.wordpress.com/2009/0...umbers-in-cpp/ например...
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
21.08.2012, 01:10  [ТС]     Заполнить контейнер случайными числами #5
только оно как то не правильно работать число несколько раз повторяется, а потом рандомно выводится следущее(и так же само) а бывает сразу несколько подряд разные выдает
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
21.08.2012, 02:21     Заполнить контейнер случайными числами #6
Почему же неправильно? В этом и заключается случайность. Если вы будете бросать игральный кубик, то неужели вы удивитесь, выбросив несколько раз подряд одно и то же число?
cmath
Модератор
2432 / 1651 / 133
Регистрация: 11.08.2012
Сообщений: 3,288
Завершенные тесты: 5
21.08.2012, 08:40     Заполнить контейнер случайными числами #7
Цитата Сообщение от I.M. Посмотреть сообщение
Почему же неправильно? В этом и заключается случайность.
А разве эти числа случайные(если быть совсем честным)? У меня был случай: заполнял матрицу псевдослучайными числами при помощи как раз srand(time(0)); у меня 103 раза матрица заполнялась одними и теми же числами (программу запускал ровно 103 раза, число точное, т.к. я считал (ждал когда появится иной вариант), оговорюсь, что после первого заполнения (матрицу во время выполнения программы можно задать хоть 1000000 раз) каждое следующее отличалось от предыдущего, но факт: каждый первый совпадал с предыдущим первым предыдущего запуска)
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
21.08.2012, 08:54     Заполнить контейнер случайными числами #8
Само собой, числа являются псевдослучайными. Однако их распределение вроде бы (точно не помню) является равномерным. Так что все ок.
Я обычно (если уже windows.h подключена) пишу srand(GetTickCount());
результаты отличаются завидной изменчивостью.
В институте у меня был одногруппник, который начал свое изучения языка именно с написания генератора псевдослучайных чисел. Можете сделать свой)
-=ЮрА=-
Заблокирован
Автор FAQ
21.08.2012, 09:25     Заполнить контейнер случайными числами #9
Хулиган, вот посмотри простой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <ctime>
#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    vector<int> vec;
    vector<int>::iterator it;
    //ÓñòГ*Г*Г*âëèâГ*ГҐГ¬ Г*Г*Г·Г*ëüГ*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ
    srand(time(0));//Гў ГЈГҐГ*ГҐГ°Г*òîðå ñëó÷ Г·ГЁГ±ГҐГ« (âîò Г·ГІГ® ГЅГІГ® Г§Г*Г*Г·ГЁГІ)
    for(int i = 0; i < 100; i++)
        //ГЌГ*ГЇГЁГ·ГЄГЁГўГ*ГҐГ¬ âåêòîð ñëó÷ Г§Г*Г*Г·ГҐГ*èÿìè îò -10 äî 10
        vec.push_back((rand()%20 - 10));
    //ГЇГҐГ·Г*ГІГ*ГҐГ¬ ýëåìåГ*ГІГ» âåêòîðГ*
    cout<<"Random numbers :\n";
    for(it = vec.begin(); it < vec.end(); it++)
        cout<<(*it)<<" ";
    cout<<endl;
    return 0;
}
Миниатюры
Заполнить контейнер случайными числами  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 11:50     Заполнить контейнер случайными числами
Еще ссылки по теме:

Заполнить матрицу случайными числами - C++
отобразить матрицу симметрично относительно главной диагонали

Как заполнить матрицу случайными числами? - C++
Здравствуйте! как можно заполнить матрицу 4*4 числами от 0..15 случайно?

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

Заполнить двусвязный список случайными числами - C++
Здравствуйте, нужно создать и заполнить двусвязный список случайными числами (int). Пытаюсь создать обычный массив,а потом заполнить...

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


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

Или воспользуйтесь поиском по форуму:
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
21.08.2012, 11:50     Заполнить контейнер случайными числами #10
Цитата Сообщение от Hydrogen Посмотреть сообщение
число точное, т.к. я считал
спасибо, поржал... в целом же не вижу в вашем сообщении логики)))
Yandex
Объявления
21.08.2012, 11:50     Заполнить контейнер случайными числами
Ответ Создать тему
Опции темы

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