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

Генератор случайных чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Список студентов (структуры) http://www.cyberforum.ru/cpp-beginners/thread1219324.html
Вводится список студентов (Ф.И.О., номер группы, оценка). Найти номер группы, в которой у всех студентов вместе наибольший средний балл.
C++ Составить программу, которая вызывает функцию, а также осуществляет ввод матрицы целых чисел Привести пример функции, устанавливающий факт симметричности квадратной матрицы относительно главной диагонали. Составить программу, которая вызывает функцию, а также осуществляет ввод матрицы целых... http://www.cyberforum.ru/cpp-beginners/thread1219322.html
Работа с указателями C++
#include <iostream> #include <conio.h> using namespace std; void fun(int *p) { int *temp=new int; *temp=15; delete p; p=&*temp;
C++ Проверка содержимого string/TextBox
Доброго времени суток! Имеется строка TextBox, которую я перевожу в string, дабы затем поместить в переменную типа int, однако в случае ввода пользователем не числа, а любого другого символа,...
C++ Переписать элементы массива a в массив в, удвоив все элементы http://www.cyberforum.ru/cpp-beginners/thread1219277.html
переписать элементы массива А в массив В, удвоив все элементы, которые меньше первого элемента массива А, остальные переписать без изменений. Массив А заполняется случайными числами. помогите...
C++ Максимально возможное число из трёх цифр "Пользователь вводит с клавиатуры трехзначное натуральное число, которое сохраняется в переменную n проверить корректность ввода, составить и вывести на экран число из цифр введенного числа n, так,... подробнее

Показать сообщение отдельно
aleks_tar
2 / 2 / 0
Регистрация: 19.06.2014
Сообщений: 17
29.06.2014, 15:26
Для диапазона используется класс Range со свойствами first_ и last_ (первый и последний), создаётся вектор, в который заносится необходимое количество элементов типа Range. Для генерации случайного числа вызывается функция getRandomInSeveralRanges(). В этой функции сначала случайным образом выбирается один из диапазонов, дальше в этом диапазоне случайным образом выбирается число. Данный пример работает только с целыми числами, но его, при желании, можно доработать, чтобы он работал, например, с числами с плавающей точкой.

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <cstdlib>
#include <vector>
#include <ctime>
#include <iostream>
 
class Range
{
    size_t first_;
    size_t last_;
public:
    Range(const size_t first, const size_t last)
    {
        first_ = first;
        last_ = last;
    }
    
    size_t getFirst() const
    {
        return first_;
    }
    
    size_t getLast() const
    {
        return last_;
    }
};
 
int getRandomInSeveralRanges(const std::vector<Range> ranges)
{
    size_t number_of_ranges = rand() % ranges.size();
    return rand() % (ranges.at(number_of_ranges).getLast() - 
        ranges.at(number_of_ranges).getFirst()) + 
        ranges.at(number_of_ranges).getFirst();
}
 
int main()
{
    // пример использования функции getRandomInSeveralRanges())
    std::vector<Range> ranges;
    ranges.push_back(Range(10, 20));
    ranges.push_back(Range(30, 40));
    // srand() нужно вызвать перед вызовом функции getRandomInSeveralRanges(),
    // но только один раз не зависимо от того, сколько раз после этого будет
    // вызвана эта функция 
    srand(time(NULL));
    for(int i = 0 ; i < 40; ++i)
    {
        std::cout << getRandomInSeveralRanges(ranges) << std::endl;
    }
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru