只是尝试生成8个随机数,但我只返回3个数字。
代码:
import java.util.Random;
public class One{
public static void main(String[] args){
Random rand = new Random();
int[] deciJunc = new int[8];
for(int i=0; i<8; i++){
deciJunc[i] = 1+rand.nextInt(8);
System.out.println(deciJunc[i]);
}
}
}
输出:
3
5
7
3
3
5
7
3
输出:
3
3
3
5
7
7
7
3
现在,我已经运行了这个程序10次,它只给了我这3个数字(3,5,7),我不明白什么是错的。 如果我改变:
deciJunc[i] = 1+rand.nextInt(8);
到
deciJunc[i] = 4+rand.nextInt(8);
它工作正常,我得到了一个良好的混合输出,如:
8
9
10
4
4
9
9
6
第一个只返回3个不同数字的错误是什么?
答案 0 :(得分:2)
不适合我亲爱的!
请多次运行代码时观察我的结果:
结果1:6,5,8,7,8,1,5,2
结果2:8,1,7,3,8,6,8,5
但是,如果您对java.util.Random课程的行为不满意。您可能希望查看java Security包中的SecureRandom,其中使用算法生成随机数。
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
public class SecureRandom {
public static void main(String[] args) {
try {
java.security.SecureRandom secureRandomGenerator = java.security.SecureRandom.getInstance("SHA1PRNG");
byte[] randomBytes = new byte[128];
secureRandomGenerator.nextBytes(randomBytes);
int seedByteCount = 5;
byte[] seed = secureRandomGenerator.generateSeed(seedByteCount);
java.security.SecureRandom secureRandom1 = java.security.SecureRandom.getInstance("SHA1PRNG");
secureRandom1.setSeed(seed);
java.security.SecureRandom secureRandom2 = java.security.SecureRandom.getInstance("SHA1PRNG");
secureRandom2.setSeed(seed);
} catch (NoSuchAlgorithmException e) {
throw new Exception("CustomAlgorithmNotFoundException" + e);
}
}
}
Here you可以找到关于锄头SecureRandom工作的很棒的解释。如果您需要更多帮助,请告诉我。
答案 1 :(得分:1)
代码有效,请尝试更大的样本。 你也可以这样写,
的System.out.println(1 + rand.nextInt(8))
跳过数组。