import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class DistinctDigitGenerator {
// ------------------------------------------------------------
// Function: generate_number
// Purpose: Create one 3-digit integer with distinct digits,
// drawn from a shared pool of available digits.
// The first digit is never zero, so the result
// is always a true 3-digit integer.
// ------------------------------------------------------------
public static int generate_number(List<Character> availableDigits, int length, Random rng) {
// Choose the first digit from the pool, excluding '0'
List<Character> nonZeroDigits = new ArrayList<>();
for (char d : availableDigits) {
if (d != '0') {
nonZeroDigits.add(d);
}
}
char firstDigit = nonZeroDigits.get(rng.nextInt(nonZeroDigits.size()));
availableDigits.remove((Character) firstDigit);
// Choose the remaining digits from the updated pool
List<Character> remaining = new ArrayList<>();
for (int i = 0; i < length - 1; i++) {
char d = availableDigits.get(rng.nextInt(availableDigits.size()));
remaining.add(d);
availableDigits.remove((Character) d);
}
// Build the number as a string, then convert to int
StringBuilder sb = new StringBuilder();
sb.append(firstDigit);
for (char d : remaining) {
sb.append(d);
}
return Integer.parseInt(sb.toString());
}
// ------------------------------------------------------------
// Function: generate_three_distinct_digit_numbers
// Purpose: Produce three integers, each with distinct digits,
// and no digit repeated across all three numbers.
// All numbers are guaranteed to be 3 digits long.
// ------------------------------------------------------------
public static int[] generate_three_distinct_digit_numbers(Random rng) {
// Start with all digits 0–9 as strings
List<Character> digits = new ArrayList<>();
for (int i = 0; i < 10; i++) {
digits.add((char) ('0' + i));
}
// Generate three numbers, each 3 digits long
int n1 = generate_number(digits, 3, rng);
int n2 = generate_number(digits, 3, rng);
int n3 = generate_number(digits, 3, rng);
return new int[]{n1, n2, n3};
}
// ------------------------------------------------------------
// Main execution
// ------------------------------------------------------------
public static void main(String[] args) {
Random rng = new Random();
// Run the generator 5 times
for (int i = 0; i < 5; i++) {
int[] result = generate_three_distinct_digit_numbers(rng);
System.out.println("(" + result[0] + ", " + result[1] + ", " + result[2] + ")");
}
}
}
/*
run:
(194, 837, 250)
(257, 108, 964)
(406, 978, 251)
(296, 478, 130)
(137, 684, 920)
*/