Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 221, средняя оценка - 4.97
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
#1

Как сделать генератор случайных чисел? - C++

04.10.2011, 06:48. Просмотров 32537. Ответов 34
Метки нет (Все метки)

Привет всем. Возник очередной вопрос за это утро.
Как сделать генератор случайных чисел?
В учебнике написано так:
"Для этого существует функция random(K) - генератор случайных чисел."
Учебник предлагает вначале написать так:
C++
1
randomize(); //Инициализация генератора случайных чисел
А потом уже использовать функцию
C++
1
random(K);
И дескать это будет целое число в интервале [0; K-1]

Я написал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <conio.h> 
using namespace std;
int main() 
{
    randomize(); //Инициализация генератора случайных чисел
    cout<<random(10);
 
    cout<<endl; 
    getch();
    return 0; 
}
Думал, что он мне выведет целое число из отрезка [0; 9], а он выдал 2 ошибки:
error C3861: randomize: идентификатор не найден
error C3861: random: идентификатор не найден

Что мне делать? Подскажите.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2011, 06:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать генератор случайных чисел? (C++):

Как сделать генератор случайных чисел? - C++
как правильно сделать генератор случайных чисел?? Приведите пожалуйста примеры??

Как сделать быстрый генератор случайных чисел? - C++
Доброго времени суток. Нашёл в сети пример, но меня не устраивает, что генератор выдаёт последовательно либо 0, либо 1, через равные...

Генератор случайных чисел. Как прикрепить? - C++
Как к генератору случайных чисел прикрепить &quot;Введите размер массива&quot;? #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; ...

Как создать генератор случайных чисел ? - C++
Доброго всем времени суток. У меня возник вопрос, как создать генератор случайных чисел. Написал такой код: a = rand() +...

Как создать генератор случайных чисел - C++
Здравствуйте!Я работаю в dev c++ 4.9.9.2 киньте готовый исходник.Зарание спасибо!

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

34
grizlik78
Эксперт С++
1974 / 1467 / 122
Регистрация: 29.05.2011
Сообщений: 3,034
27.05.2012, 22:21 #31
MrGluck, и всё-таки, какие же они истинно случайные, если для генерации чисел используется Вихрь Мерсенна? std::random_device использовался только для инициализации mt19937.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7510 / 4642 / 700
Регистрация: 29.11.2010
Сообщений: 12,678
27.05.2012, 22:32 #32
Цитата Сообщение от grizlik78 Посмотреть сообщение
MrGluck, и всё-таки, какие же они истинно случайные, если для генерации чисел используется Вихрь Мерсенна? std::random_device использовался только для инициализации mt19937.
Я основывался на ссылках, которые привел в комментарии. А что вы еще предлагаете инициализировать, кроме как ГСЧ?
0
grizlik78
Эксперт С++
1974 / 1467 / 122
Регистрация: 29.05.2011
Сообщений: 3,034
27.05.2012, 22:37 #33
Генератор истинно случайных чисел не требует инициализации. А mt19937 как и все алгоритмы получения чисел выдаёт псевдослучайную последовательность. И чтобы при каждом запуске получалась разная часть последовательности ГПСЧ надо инициализировать, от времени или от датчика истинно случайных чисел.
Так что если нужны истинно случайные числа, так и надо использовать rd, без привлечения псевдослучайных генераторов. Но устройства генерации случайных чисел могут быть не везде, и, как правило, они во много раз медленнее алгоритмов.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7510 / 4642 / 700
Регистрация: 29.11.2010
Сообщений: 12,678
27.05.2012, 22:43 #34
Цитата Сообщение от grizlik78 Посмотреть сообщение
Генератор истинно случайных чисел не требует инициализации. А mt19937 как и все алгоритмы получения чисел выдаёт псевдослучайную последовательность. И чтобы при каждом запуске получалась разная часть последовательности ГПСЧ надо инициализировать, от времени или от датчика истинно случайных чисел.
Так что если нужны истинно случайные числа, так и надо использовать rd, без привлечения псевдослучайных генераторов. Но устройства генерации случайных чисел могут быть не везде, и, как правило, они во много раз медленнее алгоритмов.
То что медленне, оно понятно. А как тогда генерировать ИСЧ? И в чем получается разница, если инициализировать gen( time(0) ) и gen( rd() ) ? В "качестве псвевдослучайности"?
0
grizlik78
Эксперт С++
1974 / 1467 / 122
Регистрация: 29.05.2011
Сообщений: 3,034
27.05.2012, 22:50 #35
Цитата Сообщение от MrGluck Посмотреть сообщение
А как тогда генерировать ИСЧ?
rd()
Правда то, насколько они будут истинно случайными зависит от реализации "random device" операционной системой. Если, например, используется /dev/urandom, то генератор может получиться довольно быстрым, но не настолько случайным как иногда хотелось бы.

Цитата Сообщение от MrGluck Посмотреть сообщение
И в чем получается разница, если инициализировать gen( time(0) ) и gen( rd() )
Разница в том, что при использовании time(0) начальное состояние предсказуемо. И если между запусками меньше секунды, то может вообще повтор получиться. В случае с rd() начальное состояние предсказать очень сложно (или невозможно). Но последовательность получается одинаково псевдослучайной.
2
27.05.2012, 22:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2012, 22:50
Привет! Вот еще темы с ответами:

Как написать генератор случайных чисел? - C++
Помогите, пожалуйста, написать такой код! Добавлено через 8 минут Только нужно, чтобы можно было указать, в каких пределах числа...

Генератор псевдо-случайных чисел, как хэш-функция - C++
Анализируя генератор псевдослучайных чисел Я пришел к выводу, что (Учитывая что RAND_MAX = 32767) придумал сам, но может где то...

Генератор случайных чисел - C++
Добрый день!У меня есть код #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;ctime&gt; char randSym() { ...

Генератор случайных чисел - C++
В общем, нужно составить программу, которая реализует алгоритм генерации случайных чисел. Естественно не используя random. Перерыла массу...


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

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

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