15
Java中的以下簡單程序使用java.util.Random
類,因此它始終顯示「hello world」。代碼片段可以在下面看到。爲什麼使用Random和硬編碼種子總是會產生相同的結果?
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));
}
}
有,它總是顯示一些奇怪的「Hello World」,即使使用的隨機類引起的隨機數,因此產生的數字應該是在每次運行變化和相應的字符應該相應地改變,但它總是隻顯示一個穩定的字符串,就像上面提到的「hello world」一樣。爲什麼會發生?
這可能與隨機數生成器具有確定性......這意味着,如果使用相同的種子值,每次都會生成相同的序列。但我不積極。 – Bryan
這個問題不是這個問題的重複。這個問題是這個問題的重複。 – Lion