Pagina 1 di 1
java generazione n caratteri random non ripetuti [RISOLTO]
Inviato: sabato 16 giugno 2007, 13:41
da Ichigo85
Ciao gente!!Sono ore che sto girando per internet...Purtroppo il tempo stringe per me e ho bisogno di chiedervi una cosa non molto complicata,ma di cui non ho molto tempo per arrovellarmici!
Allora, ho bisogno per un mio progetto universitario di una classe che genera n caratteri random non ripetuti. Ho provato a cercar su internet e l'unica cosa minimamente utile che ho trovato è a questo
link
Però questa classe genera solo lettere alfabetiche, ripetute in più! Qualcuno mi può aiutare per fare in modo che possano esserci anche caratteri come
'@', '/' e altri...e in più non ci siano ripetizioni nella generazione?
So che non è una cosa complicata, ma nel frattempo devo pensare ad altre cose..
Vi sono immensamente grato se mi date una mano!! (b2b)
Re: java generazione n caratteri random non ripetuti
Inviato: sabato 16 giugno 2007, 14:12
da Uno
Hai postato in modo errato il link, ecco quello giusto
http://www.javafaq.nu/java-example-code-184.html%22
Re: java generazione n caratteri random non ripetuti
Inviato: sabato 16 giugno 2007, 15:04
da Ichigo85
Grazie!Ho corretto!Ora..qualcuno mi aiuta?
Re: java generazione n caratteri random non ripetuti
Inviato: sabato 16 giugno 2007, 15:55
da Uno
Ichigo85 ha scritto:
Grazie!Ho corretto!Ora..qualcuno mi aiuta?
Non conosco il Java, ma posso scriverti questo pseudo-codice che non dovresti avere troppi problemi ad adattare:
Codice: Seleziona tutto
boolean Flags[LENGTH] = false;
for i from 0 to 9
{
int rand
rand = Random (0, LENGTH - i)
while Flags[rand]
{
rand++
if rand > LENGTH
{
rand = 0
}
}
Flags[rand] = true;
print (rand)
}
estrae 10 numeri casuali senza ripetizioni nell'intervallo [0,LENGTH]. (spero

)
Re: java generazione n caratteri random non ripetuti
Inviato: sabato 16 giugno 2007, 16:03
da Ichigo85
Ho capito!Perfetto grazie!
Re: java generazione n caratteri random non ripetuti
Inviato: sabato 16 giugno 2007, 17:08
da Uno
Ichigo85 ha scritto:
Ho capito!Perfetto grazie!
Se hai risolto metti RISOLTO come prefisso del titolo del post e non sarebbe male se postassi il codice in Java per semplificare future ricerche, buona programmazione!

Re: java generazione n caratteri random non ripetuti [RISOLTO]
Inviato: sabato 16 giugno 2007, 18:10
da Ichigo85
Ok...non so se servirà a qualcuno, ma ecco il codice!
Codice: Seleziona tutto
import java.util.Random;
public class RandomChar {
private static final Random RANDOM = new Random();
public static String randomAscii(int count) {
return random(count, 32, 127, false, false);
}
public static String random(int count, int start, int end, boolean letters, boolean numbers) {
return random(count, start, end, letters, numbers, RANDOM);
}
public static String random(int count, int start, int end, boolean letters, boolean numbers, Random random) {
int revcount=0;
boolean repeted=false;
if (count == 0) {
return "";
} else if (count < 0) {
throw new IllegalArgumentException("Requested random string length " + count + " is less than 0.");
}
if ((start == 0) && (end == 0)) {
end = 'z' + 1;
start = ' ';
if (!letters && !numbers) {
start = 0;
end = Integer.MAX_VALUE;
}
}
StringBuffer buffer = new StringBuffer();
String randomString;
int gap = end - start;
while (count-- != 0) {
char ch;
ch = (char) (random.nextInt(gap) + start);
if ((letters && numbers && Character.isLetterOrDigit(ch))
|| (letters && Character.isLetter(ch))
|| (numbers && Character.isDigit(ch))
|| (!letters && !numbers)) {
revcount++;
repeted=false;
if (revcount>1){
for (int i=0; i<revcount-1;i++) {
if (ch == buffer.charAt(i)) {
count++;
revcount--;
repeted=true;
}
}
}
if (repeted==false) buffer.append(ch);
} else {
count++;
}
}
randomString=buffer.toString();
return randomString;
}
}
Per farlo mi sono basato su una classe che ho trovato su internet. L'ho modificata in modo da non aver ripetizioni.
Basta fare un main dove chiama il metodo randomAscii