public class TestMath
{
public static void main(String[] args)
{
double a = 3.2;
double b = Math.pow(a , 5);
System.out.println(b);
double c = Math.sqrt(a);
System.out.println(c); double d = Math.random();///该句的运行结果为什么是0到1之间的随机数数呢?
请高手解析下啊!具体点哦!
System.out.println(d); double e = Math.sin(1.57);
System.out.println(e);
}
}
{
public static void main(String[] args)
{
double a = 3.2;
double b = Math.pow(a , 5);
System.out.println(b);
double c = Math.sqrt(a);
System.out.println(c); double d = Math.random();///该句的运行结果为什么是0到1之间的随机数数呢?
请高手解析下啊!具体点哦!
System.out.println(d); double e = Math.sin(1.57);
System.out.println(e);
}
}
解决方案 »
- CKEditor与CKFinder配置好后,不能上传图片。在线等高手
- hibernate配置文件中数据库密码加密
- Hibernate按条件分页查询,用HQL还是QBC?
- eclipse 文件里的蓝灰色空白块怎么弄没,谢谢!
- 关于xml校验的问题:dtd?schema?
- 关于Webwork中Ognl栈的读取问题
- 各位,有谁知道怎么配一个jndi service provider出来么?
- 不知道大家在这种情况下是怎样来处理的。
- JBuilder6+weblogic编译ejb出现错误,怎么办?
- 请教关于Weblogic部署一个websocket小实例,无法建立连接的问题
- 请教VO,PO的理解和应用
- 用JAVA写一个上传文件的代码
public class RandomGenerator { public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
System.out.println(nextInt(10));
}
}
public static int nextInt() {
return xorShift(new Object().hashCode() ^ (int)System.nanoTime());
}
public static int nextInt(int limit) {
return Math.abs(nextInt() ^ (int)System.nanoTime()) % limit;
} /**
* George Marsaglia, <i>Xorshift RNGs</i>, Journal of Statistical Software,
* 8(14), 2003. pdf: http://www.jstatsoft.org/v08/i14/paper
*
* @param num
* @return
*/
private static int xorShift(int num) {
num ^= (num << 6);
num ^= (num >>> 21);
num ^= (num << 7);
return num;
}
}
x[i+1]=A*x[i]%M
简要说明一下常数A和M,注意,所有产生的数都小于M,还有就是必须给定一个初始值x[0]来产生此序列,
x[0]就是这个随机数生成器的种子。A和M需要精心挑选,M必须为素数,否则会产生0,但是这种得出的结果是周期性的,如M=11,A=7种子x[0]=1,则序列为
7,5,2,3,10,4,6,9,8,1,7,5,2,
序列从M-1开始周期循环,周期T=M-1,因此你要让周期大,就必须选个大的M
比如你要实现产生0到1的随机数,可以设M为足够大,如1000000000,然后把得到的随机数再除以M即1000000000,得到的就是0到1的随机数,M越大,随机的分布就越均衡,
实际上M一般都取到足够大的,一般取M为2的31次方减一,即2147483647,这样产生的随机序列才均衡
这只是随机化的一个简单的实现,更好的方法还有,就是太复杂,无需深究,基本原理差不太多
返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 你可以去看API 里面有的