Creating a 4 digit Random Number using java with no repetition in digits
java, numbers, random
Solution
Create a list of integers from 0 to 9, shuffle it and extract the first 4.
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
for(int i = 0; i < 10; i++){
numbers.add(i);
}
Collections.shuffle(numbers);
String result = "";
for(int i = 0; i < 4; i++){
result += numbers.get(i).toString();
}
System.out.println(result);
}
There's some ugly string-to-int conversing going on, but you get the idea. Depending on your use case you can see what is needed.
Problem
I wrote a code using java to create a random 4 digit number with no repetition of digits, the code I wrote is given below :- ``` Random r = new Random(); d1 = r.nextInt(9); d2 = r.nextInt(9); d3 = r.nextInt(9); d4 = r.nextInt(9); while(d1==d2||d1==d3||d1==d4||d2==d3||d2==d4||d3==d4) { if(d1==d2||d2==d3||d2==d4) { d2 = r.nextInt(9); } if(d1==d3||d2==d3||d3==d4) { d3 = r.nextInt(9); } if(d1==d4||d2==d4||d3==d4) { d4 = r.nextInt(9); } } System.out.println(d1+""+d2+""+d3+""+d4); ``` here are the test cases(generated from `System.out.println(R1+""+R2+""+R3+""+R4);`) are as following :- ``` 0123 | OK as required 1234 | OK as required 2123 | not OK because 2 is present more than one time 9870 | OK as required 0444 | not OK because 4 is present more than one time ``` Now My question here is, that if there is some better way to do this. If I could enhance it in some way?