How to generate N random integers, each with distinct digits and exact length L in Swift

1 Answer

0 votes
import Foundation

/// Generates N random integers, each with distinct digits and exact length L.
/// - Parameters:
///   - count: Number of integers to generate (N)
///   - length: Exact digit length (L)
/// - Returns: Array of integers meeting the criteria
func generateDistinctDigitNumbers(count: Int, length: Int) -> [Int] {
    
    var results = Set<Int>()   // Use Set to avoid duplicates
    
    while results.count < count {
        
        // Generate a random string of digits of length L
        let digits = (0..<length).map { _ in Int.random(in: 0...9) }
        
        // Check if all digits are distinct
        let digitSet = Set(digits)
        guard digitSet.count == digits.count else {
            continue   // Skip if digits repeat
        }
        
        // Convert digit array to integer
        let number = digits.reduce(0) { $0 * 10 + $1 }
        
        results.insert(number)
    }
    
    return Array(results)
}

// Usage
let numbers = generateDistinctDigitNumbers(count: 10, length: 6)
print(numbers)



/*
run:

[498053, 807316, 897214, 831967, 870192, 912053, 927150, 860941, 476159, 854231]

*/

 



answered 1 day ago by avibootz

Related questions

...