如何解决为什么这段代码给出奇怪的结果?好随便喔?
产生序列的原因是,通过使用其下一种方法,使Random可预测具有可预测和可重复的序列,可以测试软件。每当特定的长种子参数是Random构造函数的参数时,实例化的Random对象都应该通过其next方法返回相同的值序列。这是java.util.Random的故意功能。
java.util.Random有两个构造函数:
Random()
和
Random(long seed)
没有长整数种子的构造函数使用系统时间为伪随机数生成器创建种子值。没有两个Random实例化将使用相同的种子,并且您应该获得一个非常好的伪随机序列。使用不带种子的构造函数的随机实例化将创建一个实例,该实例具有不可预测的值序列,这些值将是伪随机的。
具有种子值的构造函数仅用于使用其下一种方法使具有可预测序列的Random确定性。种子的典型用途是用于软件测试,其中结果必须是可预测的和可重复的。每个使用相同长种子整数的Random实例每次都会创建相同的结果序列。当使用nextInt(10)方法获取10个整数值之一时,使用的特定长度会使该序列一次又一次成为0 1 2 3 4 5 6 7 8 9。每次执行软件时可重复的此可预测序列和其他可预测序列对于测试软件非常有用,而不是用于创建不可预测的伪随机序列。
解决方法
我有一段代码会生成一些随机数并在控制台上打印出来。但是我对它所打印的图案感到好奇,例如,
import java.util.*;
public class Test
{
public static void main(String[] args)
{
Random random = new Random(-6732303926L);
for(int i=0;i<10;i++)
System.out.println(random.nextInt(10)+" ");
}
}
结果:0 1 2 3 4 5 6 7 8 9- 新行中的每个数字。
如果您稍微更改此代码!喜欢,
import java.util.*;
public class Test
{
public static void main(String[] args)
{
Random random = new Random(-6732303926L);
for(int i=0;i<10;i++)
System.out.println(random.nextInt(11)+" ");
}
}
结果:8 9 2 2 10 10 8 8 0 0- 换行中的每个数字。
根本不是随机的0123456789是什么原因呢?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。