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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ перевод строки в число, определить делится ли оно на 4 http://www.cyberforum.ru/cpp-beginners/thread902562.html
пожалуйста помогите! нужно определить делится ли строка на 4. я так понял что функция atoi не подходит, как еще это можно сделать?
C++ Вычислить знгачение выражения при заданных условиях. Не могу справиться с задачкой, помогите пожалуйста :) http://www.cyberforum.ru/cpp-beginners/thread902561.html
C++ Как убрать искажения в raycasting алгоритме при обзоре по OY
Доброго времени суток. Пишу 2.5D игру , где видимость трехмерного пространства создается с помощью алгоритма raycasting (на нем работает Doom , Doom II , Duke Nuknem 3D , Hexen). Вопрос такой :...
C++ Структура "Банковский кредит"
Структура «Банковский кредит» с полями "ФИО клиента", "сумма", "срок", "процент". Бизнес-функция: вывод суммы, которую ежемесячно должен выплачивать клиент.
C++ Анализ http://www.cyberforum.ru/cpp-beginners/thread902544.html
Помогите пожалуйста написать анализ по программе для ргр. По введенному номеру музыкальной ноты вывести ее словесное наименование. Например, 3 – ми. class Note { static const char* note; ...
C++ Как модернизировать функцию rand, что бы числа генерировались на заданом промежутке от a до b ? Как модернизировать функцию rand, что бы числа генерировались на заданом промежутке от a до b ? подробнее

Показать сообщение отдельно
0x10
2464 / 1636 / 238
Регистрация: 24.11.2012
Сообщений: 4,031
15.06.2013, 18:28
Ну погнали... Способ первый, самый простой - использовать функтор:
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
32
#include <algorithm>
#include <iostream>
#include <vector>
 
class MyRand
{
public:
    int operator()(int i) 
    {
        return rand() % i;
    }
};
 
int main()
{
    std::vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    v.push_back(5);
 
    MyRand r;
    std::random_shuffle(v.begin(), v.end(), r);
 
    for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it)
    {
        std::cout << *it << std::endl;
    }
 
    return 0;
}
Добавлено через 2 минуты
Способ второй... Допустим, все-таки хотим использовать функцию. Можем сделать ее static.
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 <algorithm>
#include <iostream>
#include <vector>
 
class MyRand
{
public:
    static int myrand(int i) 
    {
        return rand() % i;
    }
};
 
int main()
{
    std::vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    v.push_back(5);
 
    std::random_shuffle(v.begin(), v.end(), MyRand::myrand);
 
    for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it)
    {
        std::cout << *it << std::endl;
    }
 
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru