package untitled1;
import java.util.Random;
public class Untitled1 {
public static void main(String[] args) {
Random r=new Random(47);
int b=r.nextInt(100);
int c=r.nextInt(100);
System.out.println(b);
System.out.println(c);
}
}为什么输出的随机数都不会改变呢?
例如
58
55
一直都是那样呢?
Random r=new Random(47);
Random(47);这地方有没有参数有什么区别吗?
有参数的时候可以产生会改变的随机数。
import java.util.Random;
public class Untitled1 {
public static void main(String[] args) {
Random r=new Random(47);
int b=r.nextInt(100);
int c=r.nextInt(100);
System.out.println(b);
System.out.println(c);
}
}为什么输出的随机数都不会改变呢?
例如
58
55
一直都是那样呢?
Random r=new Random(47);
Random(47);这地方有没有参数有什么区别吗?
有参数的时候可以产生会改变的随机数。
解决方案 »
- 编写一个函数,用多线程完成任务。如何实现在函数执行时阻塞主线程,直到任务完成主线程再继续?
- Java将中文转成unicode存入到文本文件
- java中数组对象的引用
- 怎样将.zip文件转换成字节流的形式保存?请各位高手指教!!
- 求助!哪位有javaexcelapi的那个jar文件,给我一份!谢谢了。他的官方网站以经上不去了。
- 电子书籍下载好帐
- 关于在图形上写文字的问题,急!在线等待
- jbuilder7 Enterprise-WebLogic版如何解密
- 第一次来这里提问,大家给点建议,来着有分。。。
- 问几个java类的问题 麻烦了
- 关于spring与log4j的问题????????
- java.nio.*;网络通信问题,Channal怎么传对象?对像怎么序列化?
改成Random r=new Random();
random()說是個隨機函數,其實他是有算法的- -|、
你把47當作初始值,他每次會從47開始算,但算法是一樣的結果當然不變
你不賦值的話他會隨機產生一個值從再開始算
可以用
Random r = new Random(System.currentTimeMillions());
等同于
Random r=new Random(); Random 的构造是new Random(long seed);
给它一个种子他给你一个数列。如果种子是一个固定值那么产生的数列也是固定数列。
public Random(long seed) {
this.seed = new AtomicLong(0L);
setSeed(seed);
}
无参构造函数,是直接使用当前时间来作为种子
public Random() { this(++seedUniquifier + System.nanoTime()); }参考nextInt源代码
public int nextInt(int n) {
if (n <= 0)
throw new IllegalArgumentException("n must be positive"); if ((n & -n) == n) // i.e., n is a power of 2
return (int)((n * (long)next(31)) >> 31); int bits, val;
do {
bits = next(31);
val = bits % n;
} while (bits - val + (n-1) < 0);
return val;
} protected int next(int bits) {
long oldseed, nextseed;
AtomicLong seed = this.seed;
do {
oldseed = seed.get();
nextseed = (oldseed * multiplier + addend) & mask;
} while (!seed.compareAndSet(oldseed, nextseed));
return (int)(nextseed >>> (48 - bits));
}