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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 221, средняя оценка - 4.97
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
04.10.2011, 06:48     Как сделать генератор случайных чисел? #1
Привет всем. Возник очередной вопрос за это утро.
Как сделать генератор случайных чисел?
В учебнике написано так:
"Для этого существует функция 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: идентификатор не найден

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

C++ генератор случайных чисел
Как использовать генератор случайных чисел? C++
C++ Генератор случайных чисел
C++ Генератор случайных чисел
C++ Генератор случайных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
04.10.2011, 06:50     Как сделать генератор случайных чисел? #2
http://www.cplusplus.com/reference/c.../cstdlib/rand/
greeezz
272 / 165 / 4
Регистрация: 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
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
04.10.2011, 07:02     Как сделать генератор случайных чисел? #4
Почитайте тут: Про рандом
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
04.10.2011, 09:49     Как сделать генератор случайных чисел? #5
Alex Z, у Вас книжка про Borland Turbo C++, а у борланд своё представление про стандарты. Найдите лучше другую книжку. Здесь есть хорошая подборка литературы www.cyberforum.ru/cpp/thread152353.html
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
04.10.2011, 10:05     Как сделать генератор случайных чисел? #6
C++11: http://en.cppreference.com/w/cpp/numeric/random
-=ЮрА=-
Заблокирован
Автор 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;
}
Миниатюры
Как сделать генератор случайных чисел?  
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.10.2011, 11:18     Как сделать генератор случайных чисел? #8
Юра, rand() это слабенький генератор псевдослучайных чисел, пусть TC лучше более серьезную литературу почитает.
-=ЮрА=-
Заблокирован
Автор FAQ
04.10.2011, 11:40     Как сделать генератор случайных чисел? #9
Цитата Сообщение от Thinker Посмотреть сообщение
Юра, rand() это слабенький генератор псевдослучайных чисел, пусть TC лучше более серьезную литературу почитает.
Alex Z, в таком случае Вам сюда
http://www.cyberforum.ru/cpp-beginne...tml#post222553
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
04.10.2011, 13:41     Как сделать генератор случайных чисел? #10
Цитата Сообщение от Thinker Посмотреть сообщение
rand() это слабенький генератор псевдослучайных чисел
Зависит от задачи. Для выкидывания кубиков в нардах или раздачи карт за глаза хватит. Ну а если всё по-взрослому - так это специальную железяку покупать нужно...
Евгений М.
04.10.2011, 13:51
  #11

Не по теме:

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

mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
04.10.2011, 13:52     Как сделать генератор случайных чисел? #12
Цитата Сообщение от easybudda Посмотреть сообщение
или раздачи карт за глаза хватит
Вот тут как раз про раздачу карт =) Очень познавательно
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. Это как-то можно реализовать?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
05.10.2011, 12:36     Как сделать генератор случайных чисел? #14
Цитата Сообщение от Alex Z Посмотреть сообщение
А если я хочу например получить целое случайное число от 3 до 2046. Это как-то можно реализовать?
rand()%2046 - от 0 до 2046
rand()%2043+3 - от 3 до 2046
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 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
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
05.10.2011, 12:46     Как сделать генератор случайных чисел? #16
rand()%2046 - от 0 до 2045
rand()%2043+3 - от 3 до 2045

Добавлено через 11 секунд
опоздал)
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
05.10.2011, 12:48     Как сделать генератор случайных чисел? #17
Не говоря о том, что rand вообще не ЧСГ, а пукалка какая-то...
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
05.10.2011, 12:48     Как сделать генератор случайных чисел? #18
Цитата Сообщение от neske Посмотреть сообщение
rand()%2046 - от 0 до 2045
до 2046 =)
или до 2045 включительно
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
05.10.2011, 12:52     Как сделать генератор случайных чисел? #19
Цитата Сообщение от mimicria Посмотреть сообщение
до 2046 =)
или до 2045 включительно
не пойдет такое объяснение, тогда 0 у вас не входит, а он входит в диапазон.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2011, 13:31     Как сделать генератор случайных чисел?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
05.10.2011, 13:31  [ТС]     Как сделать генератор случайных чисел? #20
Всё. Я понял. Всем спасибо.
Yandex
Объявления
05.10.2011, 13:31     Как сделать генератор случайных чисел?
Ответ Создать тему
Опции темы

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