Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.77/188: Рейтинг темы: голосов - 188, средняя оценка - 4.77
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
1

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

04.10.2011, 06:48. Просмотров 34328. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

34
Евгений М.
1053 / 990 / 101
Регистрация: 28.02.2010
Сообщений: 2,876
Завершенные тесты: 2
04.10.2011, 06:50 2
http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
0
greeezz
275 / 168 / 21
Регистрация: 10.07.2011
Сообщений: 441
04.10.2011, 06:57 3
пример из книги C++ How to program

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
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
#include <iomanip>
using std::setw;
 
#include <cstdlib> // contains prototypes for functions srand and rand
using std::rand;                                                      
using std::srand;                                                     
 
int main() {
     unsigned seed; // stores the seed entered by the user
 
     cout << "Enter seed: ";
     cin >> seed;
     srand( seed ); // seed random number generator
 
     // loop 10 times
     for ( int counter = 1; counter <= 10; counter++ )
     {
        // pick random number from 1 to 6 and output it
        cout << setw( 10 ) << ( 1 + rand() % 6 );
 
        // if counter is divisible by 5, start a new line of output
        if ( counter % 5 == 0 )
           cout << endl;
     } // end for
    return 0; // indicates successful termination
 } // end main
0
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
04.10.2011, 07:02 4
Почитайте тут: Про рандом
0
easybudda
Модератор
Эксперт CЭксперт С++
10106 / 6015 / 1507
Регистрация: 25.07.2009
Сообщений: 11,403
04.10.2011, 09:49 5
Alex Z, у Вас книжка про Borland Turbo C++, а у борланд своё представление про стандарты. Найдите лучше другую книжку. Здесь есть хорошая подборка литературы www.cyberforum.ru/cpp/thread152353.html
1
Nameless One
Эксперт С++
5786 / 3435 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
04.10.2011, 10:05 6
C++11: http://en.cppreference.com/w/cpp/numeric/random
1
-=ЮрА=-
Заблокирован
Автор FAQ
04.10.2011, 11:13 7
Цитата Сообщение от Alex Z Посмотреть сообщение
Привет всем. Возник очередной вопрос за это утро.
Как сделать генератор случайных чисел?
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 <cstdlib>
#include <conio.h>
#include <time.h>
using namespace std;
 
int main()
{
    long i,n;
    do
    {
        srand(time(NULL));//×òîáû ñëó÷Г*Г©Г*ûå Г·ГЁГ±Г«Г* Г*ГҐ ïîâòîðÿëèñü
        std::cout<<"Enter num elemens : ";
        std::cin>>n;
        std::cout<<"Generated numbers\r\n";
        for(i = 0; i < n; i++)
            std::cout<<50 - rand()%100<<"\r\n";
        std::cout<<"Press Y for new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
2
Миниатюры
Как сделать генератор случайных чисел?  
Thinker
Эксперт С++
4233 / 2207 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.10.2011, 11:18 8
Юра, rand() это слабенький генератор псевдослучайных чисел, пусть TC лучше более серьезную литературу почитает.
1
-=ЮрА=-
Заблокирован
Автор FAQ
04.10.2011, 11:40 9
Цитата Сообщение от Thinker Посмотреть сообщение
Юра, rand() это слабенький генератор псевдослучайных чисел, пусть TC лучше более серьезную литературу почитает.
Alex Z, в таком случае Вам сюда
http://www.cyberforum.ru/cpp-beginners/thread44753.html#post222553
0
easybudda
Модератор
Эксперт CЭксперт С++
10106 / 6015 / 1507
Регистрация: 25.07.2009
Сообщений: 11,403
04.10.2011, 13:41 10
Цитата Сообщение от Thinker Посмотреть сообщение
rand() это слабенький генератор псевдослучайных чисел
Зависит от задачи. Для выкидывания кубиков в нардах или раздачи карт за глаза хватит. Ну а если всё по-взрослому - так это специальную железяку покупать нужно...
0
Евгений М.
04.10.2011, 13:51
  #11

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
Ну а если всё по-взрослому - так это специальную железяку покупать нужно
Ее когда-то использовали. :)
Во время работ над созданием водородной бомбы фон Нейман и Станислав Улам разработали метод независимых статистических испытаний, известный теперь, как метод Монте-Карло. Одной из главных сложностей при разработке этого метода было отсутствие в то время генераторов случайных чисел. Тогда Нейман предложил использовать для выработки последовательностей случайных чисел одну из рулеток в казино Монте-Карло, где были лучшие рулетки, а, следовательно, и вырабатывались лучшие последовательности случайных чисел. Военное ведомство согласилось на аренду одного из таких устройств — Улам и Нейман вдоволь наигрались за государственный счет в рулетку, а свой метод в память об этом они назвали методом Монте-Карло.
Источник. Читаем про фон Неймана.

3
mimicria
return (true);
1960 / 1097 / 219
Регистрация: 19.04.2011
Сообщений: 2,345
04.10.2011, 13:52 12
Цитата Сообщение от easybudda Посмотреть сообщение
или раздачи карт за глаза хватит
Вот тут как раз про раздачу карт =) Очень познавательно
0
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
05.10.2011, 12:33  [ТС] 13
Цитата Сообщение от Nursik77 Посмотреть сообщение
Почитайте тут: Про рандом
Я прочитал эту ссылку и сделал так, как вы там советовали:
Цитата Сообщение от Nursik77 Посмотреть сообщение
Если не ошибаюсь randomize(); это сишная ф-я, и в плюсах она не пойдет. В начале подключи бибу #include <time.h>,а потом вместо randomize(); напиши srand(time(NULL));
В итоге записал вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <conio.h> 
#include <time.h> //Чтобы использовать srand(time(NULL))
using namespace std;
int main() 
{
    int i;  
    srand(time(NULL));
    for (i=1; i<=9; i++)
        cout<<"Slychainoe chislo "<<i<<" = "<<rand()<<endl;
    cout<<endl; 
    getch();  
    return 0; 
}
Он мне выводит на экран 9 случайных чисел. Каждый раз новые. Но я не пойму по какому принципу. Он их берёт из какого-то определённого диапазона? Из какого? Они только целые и положительные. А если я хочу например получить целое случайное число от 3 до 2046. Это как-то можно реализовать?
0
mimicria
return (true);
1960 / 1097 / 219
Регистрация: 19.04.2011
Сообщений: 2,345
05.10.2011, 12:36 14
Цитата Сообщение от Alex Z Посмотреть сообщение
А если я хочу например получить целое случайное число от 3 до 2046. Это как-то можно реализовать?
rand()%2046 - от 0 до 2046
rand()%2043+3 - от 3 до 2046
0
Thinker
Эксперт С++
4233 / 2207 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
05.10.2011, 12:45 15
Цитата Сообщение от mimicria Посмотреть сообщение
rand()%2046 - от 0 до 2046
rand()%2043+3 - от 3 до 2046
от 0 до 2045
и
от 3 до 2045
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
05.10.2011, 12:46 16
rand()%2046 - от 0 до 2045
rand()%2043+3 - от 3 до 2045

Добавлено через 11 секунд
опоздал)
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
05.10.2011, 12:48 17
Не говоря о том, что rand вообще не ЧСГ, а пукалка какая-то...
0
mimicria
return (true);
1960 / 1097 / 219
Регистрация: 19.04.2011
Сообщений: 2,345
05.10.2011, 12:48 18
Цитата Сообщение от neske Посмотреть сообщение
rand()%2046 - от 0 до 2045
до 2046 =)
или до 2045 включительно
0
Thinker
Эксперт С++
4233 / 2207 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
05.10.2011, 12:52 19
Цитата Сообщение от mimicria Посмотреть сообщение
до 2046 =)
или до 2045 включительно
не пойдет такое объяснение, тогда 0 у вас не входит, а он входит в диапазон.
0
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
05.10.2011, 13:31  [ТС] 20
Всё. Я понял. Всем спасибо.
0
05.10.2011, 13:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2011, 13:31

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

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

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


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

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

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