我试图生成没有使用任何Random()函数的无意义单词。我想到可以使用当前时钟或鼠标坐标。我选择使用当前时钟。下面是我编写的代码。
private final char[] charray = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
private char getRandomCharacter(){
return charray[random(charray.length)];
}
private int random(int value){
value =(int) System.nanoTime()% 52;
return value;
}
protected Randomizer(){
boolean running = true;
int count = 0;
int max = 5;
while(running){
StringBuilder sb = new StringBuilder();
int size = random(25) + random(25);
for (int i = 0; i < size; i++) {
sb.append(getRandomCharacter());
}
System.out.println("Random Line : " + sb.toString());
if (count++ == max) {
running = false;
System.out.println("All of them are random.");
}
}
}
public static void main(String[] args) {
new Randomizer();
}
我原本期望的输出是:
axdlMkjiIfjcmqQopv 等等..
但我得到的却像这样:
ZNNrrrUUUUxxxxbbbhhhLLLLoooRRRRRvvvYYYYBBBBfffI 或 JmmmPPKKKKnnnnRRBeeHHHHlllllOOOOrrrVVVVV
为什么会有太多连续的字符?是因为 nanoTime
太慢了吗?我之前用的是 currentTimeMillis
,但它更糟糕。我找不出原因,也找不到任何关于如何使用当前时钟随机的资料。
Random
类。伪随机数生成很难做到完美(即使在Java中最初的随机方法也没有做好),所以如果你试图重新发明这个轮子,你会让自己备受折磨。 - BobulousRandom
类? - Mureinik