Ho scritto un codice utilizzando Java per creare un numero di 4 cifre a caso senza ripetizione di cifre, il codice che ho scritto è il seguente: -
Creazione di un numero casuale a 4 cifre utilizzando Java con nessuna ripetizione in cifre
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);
qui sono i casi di test (generati da System.out.println(R1+""+R2+""+R3+""+R4);
) sono i seguenti: -
| 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
Ora la mia domanda di lei È, se c'è un modo migliore per farlo. Se potessi migliorarlo in qualche modo?
Non sono sicuro se questo sarebbe il modo migliore, ma utilizzare un 'Set set = new LinkedHashSet (); 'e usa un ciclo' while' finché la sua dimensione non è 4 (o la dimensione desiderata) e all'interno del ciclo continua ad aggiungere i numeri interi casuali. –
ok ci provo, grazie – kakabali
Se ho capito bene ci sono 5040 possibili combinazioni. Crea un array con tutti i valori 5040 e selezionalo con un numero casuale modulo 5040. –