Napisałem kod za pomocą Java do tworzenia losowy numer 4-cyfrowy bez powtarzania cyfr, kod pisałem podano poniżej: -
Tworzenie 4-cyfrowy liczb losowych przy użyciu języka Java bez powtarzania w cyfr
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);
tutaj są przypadki testowe (generowane z System.out.println(R1+""+R2+""+R3+""+R4);
) są następujące: -
| 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
teraz moje pytanie jej Chodzi o to, że jeśli jest jakiś lepszy sposób na zrobienie tego. Czy mógłbym w jakiś sposób go ulepszyć?
Nie jestem pewien, czy to byłby najlepszy sposób, ale użyj 'Set set = new LinkedHashSet (); 'i używaj pętli' while', aż jej rozmiar wynosi 4 (lub pożądany rozmiar), a wewnątrz pętli dodaj losowe liczby całkowite. –
ok to spróbuje, dziękuje – kakabali
Jeśli to stwierdziłem, istnieje 5040 możliwych kombinacji. Utwórz tablicę ze wszystkimi wartościami 5040 i wybierz z niej losową liczbę modulo 5040. –