Как создать генератор случайных чисел без повторений на С++?

Пользователь

от charles.orn , в категории: Другие , 6 месяцев назад

Как создать генератор случайных чисел без повторений на С++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от yasmine , 5 месяцев назад

@charles.orn 

Для создания генератора случайных чисел без повторений на 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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>

std::vector<int> generateRandomNumbers(int minValue, int maxValue, int count) {
    std::vector<int> numbers;
    
    // заполняем вектор случайными числами
    for(int i = minValue; i <= maxValue; i++) {
        numbers.push_back(i);
    }
    
    // перемешиваем случайным образом
    srand(time(nullptr));
    for(int i = 0; i < numbers.size(); i++) {
        int j = rand() % numbers.size();
        std::swap(numbers[i], numbers[j]);
    }
    
    // обрезаем до необходимой длины
    numbers.resize(count);
    
    return numbers;
}

int main() {
    int minValue = 1;
    int maxValue = 10;
    int count = 5;
    
    std::vector<int> randomNumbers = generateRandomNumbers(minValue, maxValue, count);
    
    // выводим сгенерированные числа
    for(int number : randomNumbers) {
        std::cout << number << " ";
    }
    
    return 0;
}


В данном примере функция generateRandomNumbers генерирует вектор случайных чисел в заданном диапазоне (от minValue до maxValue) без повторений. Для этого сначала заполняется вектор числами от minValue до maxValue, затем происходит перемешивание случайным образом и обрезание до необходимой длины count. Алгоритм перемешивания основан на используемой библиотеке cstdlib и функции rand().