How to find if a list of 6-digit random numbers contains 3 random digits in C++

1 Answer

0 votes
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <ctime>

// Generate a random 6‑digit number
int generateSixDigit() {
    return 100000 + rand() % 900000;
}

// Generate a random digit (0–9)
int generateDigit() {
    return rand() % 10;
}

// Check if a number contains a specific digit
bool containsDigit(int number, int digit) {
    std::string s = std::to_string(number);
    char d = '0' + digit;
    return s.find(d) != std::string::npos;
}

// Check if number contains all 3 digits
bool containsAllDigits(int number, int d1, int d2, int d3) {
    return containsDigit(number, d1) &&
           containsDigit(number, d2) &&
           containsDigit(number, d3);
}

// Generate a list of random 6‑digit numbers
std::vector<int> generateList(int count) {
    std::vector<int> list;
    list.reserve(count);
    for (int i = 0; i < count; i++)
        list.push_back(generateSixDigit());
    return list;
}

int main() {
    srand(time(nullptr));

    // Generate list of numbers
    int count = 20; // you can change this
    std::vector<int> numbers = generateList(count);

    // Generate 3 random digits
    int d1 = generateDigit();
    int d2 = generateDigit();
    int d3 = generateDigit();

    std::cout << "Random digits: " << d1 << " " << d2 << " " << d3 << "\n\n";

    std::cout << "Generated numbers:\n";
    for (int n : numbers)
        std::cout << n << "\n";

    std::cout << "\nNumbers containing ALL 3 digits:\n";

    bool found = false;
    for (int n : numbers) {
        if (containsAllDigits(n, d1, d2, d3)) {
            std::cout << n << "\n";
            found = true;
        }
    }

    if (!found)
        std::cout << "None found.\n";

    return 0;
}



/*
run:

Random digits: 2 3 1

Generated numbers:
552523
959720
701959
524902
727203
491066
209011
650592
666630
489982
547794
327124
808400
357284
930291
859282
770494
524429
844604
337064

Numbers containing ALL 3 digits:
327124
930291

*/

 



answered Jan 2 by avibootz
...