Random rand=new Random(47);
47是什么啊?有什么作用?
47是什么啊?有什么作用?
解决方案 »
- public void launchFrame() 是干什么用的 在API中找不到它?
- [请教]tinyos中java程序移植问题
- 构造方法能否override 和overLoding?
- java程序调用unix外部命令,怎样才能实现后台执行?
- 如果要在界面放两个CHECKBOX,每点击一个CHECKBOX,就弹出一个MSG,显示这个CHECKBOX的名字,应该怎么做(求一段能运行的源程序)
- 我配置 jboss 后 run.bat –c all 后的错误,求助 !!!!!!!!!!!!
- 关于一个日期格式的小问题,但是很急
- java程序不能运行
- 请问:为什么在resin2.1.0里面,我的load-on-startup没有反应,run-at也一样
- 怎么用jb6自带的例子也不行啊?
- 想请问我这样的人要刻苦学习JAVA语言,要多长时间能参加工作?
- JAVA 中如何得到 基本类型变量的地址
public Random(long seed)使用单个 long 种子创建一个新随机数生成器:
public Random(long seed) { setSeed(seed); }next 方法使用它来保存随机数生成器的状态。 参数:
seed - 初始种子。
另请参见:
setSeed(long)
方法详细信息 setSeed
public void setSeed(long seed)使用单个 long 种子设置此随机数生成器的种子。setSeed 的常规协定是它更改此随机数生成器对象的状态,使其状态好像是刚刚使用参数 seed 作为种子创建它的状态一样。Random 类按如下方式实现 setSeed 方法:
synchronized public void setSeed(long seed) {
this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);
haveNextNextGaussian = false;
}由 Random 类实现的 setSeed 恰好只使用 48 位的给定种子。但是,通常重写方法可能使用 long 参数的所有 64 位作为种子值。 注:尽管种子值是一个基本的 AtomicLong,但仍必须对此方法同步,确保 haveNextNextGaussian 的语义正确。 参数:
seed - 初始种子。
47是种子数,是Random在开始计算时需要的基数
在给定同样的种子数时,rand生成的所有随机数序列是固定的
按照8楼大大的说法,是不是说:
Random rand = new Random(47);
Random ra = new Random(47);
int[] a = new int[50];
int[] b = new int[50];
for(int i=0;i<a.length;i++){
a[i]=rand.nextInt(100)+1;
b[i]=ra.nextInt(100)+1;
}赋值之后,a和b是完全相同的2个数组?
setSeed(seed);
} public Random() {//如果为空,取系统时钟(毫秒)
this(System.currentTimeMillis());
} synchronized protected int next(int bits) {
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return (int) (seed >>> (48 - bits));
} 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;
}所以 random(n) 预先指定了pseudorandom(伪随即码)
nexInt(int m) m指定了随即数上限.
每次调用int(int bits)它都会改变的