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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
21.08.2012, 00:34     Заполнить контейнер случайными числами #1
ТОлько начинаю свой тернистый путь, многие с этого начинали так что не надо судить строго мой нубовский код! идея такова что бы контейнер заполняется числами до 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
21.08.2012, 02:21     Заполнить контейнер случайными числами #6
Почему же неправильно? В этом и заключается случайность. Если вы будете бросать игральный кубик, то неужели вы удивитесь, выбросив несколько раз подряд одно и то же число?
cmath
Модератор
 Аватар для cmath
2415 / 1634 / 132
Регистрация: 11.08.2012
Сообщений: 3,252
Завершенные тесты: 5
21.08.2012, 08:40     Заполнить контейнер случайными числами #7
Цитата Сообщение от I.M. Посмотреть сообщение
Почему же неправильно? В этом и заключается случайность.
А разве эти числа случайные(если быть совсем честным)? У меня был случай: заполнял матрицу псевдослучайными числами при помощи как раз srand(time(0)); у меня 103 раза матрица заполнялась одними и теми же числами (программу запускал ровно 103 раза, число точное, т.к. я считал (ждал когда появится иной вариант), оговорюсь, что после первого заполнения (матрицу во время выполнения программы можно задать хоть 1000000 раз) каждое следующее отличалось от предыдущего, но факт: каждый первый совпадал с предыдущим первым предыдущего запуска)
I.M.
 Аватар для 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++
Заполнить строку случайными числами от 1 до 10 C++

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

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

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