import java.util.Random;public class Test {
public static void main(String[] args) {
Random ra = new Random(100);
System.out.println(ra.nextInt());
}
}
为什么得到的不是100之内的数呢?应该是我没理解,请各位指点 谢谢~~
解决方案 »
- 对象转换!!
- JAVA底层代码求解,谢谢
- 求一段简单有效的小代码,我写完之后还是少一种情况,而且效率不高
- java树型控件节点可编辑
- 请教:linux下如何得到本机实际ip?
- java中,如何定位(行列)输出字符串?
- File file = new File(“123.txt”) 用什么办法让文件是隐藏文件
- 为什么能访问别的对象的私有变量?
- 简单的问题:float类型怎么限制精度位数?用NumberFormat输出有','?
- 请问怎么将windows的区域编码比如2056,1033之类的转换成Java的Locale啊?
- 急急急。。。关于Runtime.exec()的用法!!!
- Socket网络编程的问题!!!
System.out.println(ra.nextInt(100))
这个我在提问之前已经试过,也知道应该是这样,但不明白:Random ra = new Random(100);还有啥用?
我记得Thinking in java书上说只有用47作为种子,每次才会产生相同的随机数
Random ra = new Random(47);读取一个100以内的随机数要用ra.nextInt(100);
synchronized protected int next(int bits) {
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return (int)(seed >>> (48 - bits));
}
里面的seed变量就是种子,Random rand =new Random(100); 实际调用了setSeed(long)这个方法,从而使seed这样成员变量赋值为25。
随机数生成器对象的状态由seed控制,里面比较复杂的随机数的均衡算法反正一直没用到,暂时当它没什么用~
选自《编程思想
System.out.println(r.nextInt(100))
应该改成
Random ra = new Random();
System.out.println(ra.nextInt(100));
ra只生成一个Random类的实例。
那么,
Random ra = new Random(常量值);
System.out.println(ra.nextInt(100));
如果想每次运行不一样:
那么,
Random ra = new Random();
System.out.println(ra.nextInt(100));ra.nextInt(100)表示随机返回0~100之内的整数(包括0,但不包括100)