Il seguente semplice programma in Java utilizza la classe java.util.Random
in modo da visualizzare sempre "ciao mondo". Lo snippet di codice può essere visto sotto.Perché l'utilizzo di Random con un seme codificato produce sempre gli stessi risultati?
package nomain;
import java.util.Random;
final public class J
{
public static String randomString(int seed)
{
Random rand = new Random(seed);
StringBuilder sb = new StringBuilder();
for(int i=0;;i++)
{
int n=rand.nextInt(27);
if (n==0)
{
break;
}
sb.append((char) ('`'+n));
}
return sb.toString();
}
public static void main(String args[])
{
System.out.println(randomString(-229985452)+' '+randomString(-147909649));
}
}
V'è una certa sorpresa in quanto visualizza sempre "ciao mondo", anche se la classe Random viene utilizzata che causa i numeri casuali per generare di conseguenza, il numero dovrebbe essere cambiato in ogni corsa e il corrispondente i personaggi dovrebbero essere cambiati di conseguenza, ma mostra sempre solo una stringa stabile che è come menzionato sopra "Ciao mondo". Perché succede?
Questo probabilmente ha a che fare con il fatto che i generatori di numeri casuali sono deterministici ... nel senso, se viene utilizzato lo stesso valore di inizializzazione, la stessa sequenza verrà generata ogni volta. Ma io non sono positivo. – Bryan
Questa domanda non è un duplicato di quella domanda. Quella domanda è duplicata di questa invece. – Lion