【发布时间】:2011-12-24 01:55:15
【问题描述】:
以下 Java 简单程序使用 java.util.Random 类,因此它始终显示“hello world”。代码sn-p如下所示。
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));
}
}
令人惊讶的是,即使使用了导致随机数生成的 Random 类,它也始终显示“hello world”,因此,每次运行时都应更改数字并相应更改相应的字符,但它总是只显示一个稳定的字符串,就是上面提到的“hello world”。为什么会这样?
【问题讨论】:
-
这可能与随机数生成器是确定性的事实有关...意思是,如果使用相同的种子值,则每次都会生成相同的序列。但我并不积极。
-
这个问题不是那个问题的重复。这个问题是这个问题的重复。