Math.random()问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Math.random()问题相关的知识,希望对你有一定的参考价值。
Math.random()是0~1之间的数
1.那Math.random(1)Math.random(2)是什么,怎么计算的
2.Math.random()是0~1,就是小数.为什么3*Math.random()+1就是1~3之间的数??
2个问题回答其中一个就给分,2个都让我满意追加
其二,一般来说,用文本框输入的任何信息,当然包括你输入的“50”或则“100”,计算机都当做字符串处理了。所以如果你想把你输入的信息按照数学那样来加减乘除,则应该把信息先转化为数字信息。
所以我的思路是在一开始就将字符串的信息转化为数字信息:
var min_num=parseInt(document.myform.l_num.value);
var max_num=parseInt(document.myform.u_num.value);
整个程序为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
the lower number:
the upper number:
另外
var num=Math.random()*(max_num-min_num)+min_num;
你说后面的不起作用,当然,JS存在隐式数据类型转化一说。
所以你也可以这样处理
var num=Math.random()*(max_num-min_num)+min_num*1;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
the lower number:
the upper number:
前者是显示转化,后者是隐式转化
希望对你有帮助 参考技术B Math.random()会随机产生一个int型的数 第一个着实没见过 0<Math.random()<1 则0<Math.random()*3<3 则1<3*Math.random()+1<4 参考技术C 在我记忆中,Math.random(1)代表0-1之间的数,所以Math.random(2)代表0-2之间的数。然后再看你定义什么类型的。3*Math.random()+1代表1-4之间的数。 参考技术D var randomNum = Math.random(); //生成随机数,范围在0到1
var index = parseInt(20000 * randomNum); //index是从randomNum 这个随机数而来,乘20000是为了得到0到20000间的整数
有关随机数问题
(数据类型)(最小值+Math.random()*(最大值-最小值+1))
例:
(int)(1+Math.random()*(10-1+1))
从1到10的int型随数
获得随机数
for (int i=0;i<30;i++)
{System.out.println((int)(1+Math.random()*10));}
(int)(1+Math.random()*10)
通过java.Math包的random方法得到1-10的int随机数
公式是:最小值---最大值(整数)的随机数
(类型)最小值+Math.random()*最大值
Random ra =new Random();
for (int i=0;i<30;i++)
{System.out.println(ra.nextInt(10)+1);}
通过java.util包中的Random类的nextInt方法来得到1-10的int随机数
生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。
[n1,n2]
也就是 ra.nextDouble() * (n2-n1)+n1
java产生随机数的几种方式
一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在j2me中没有。
二.在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long,这个也是我们在j2me的程序里经常用的一个取随机数的方法。
三.在我们的System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内啦
其实在Random的默认构造方法里也是使用上面第三种方法进行随机数的产生的
对于方法二中的Random类有以下说明:
java.util.Random类有两种方式构建方式:带种子和不带种子
不带种子:
此种方式将会返回随机的数字,每次运行结果不一样
public class RandomTest {
public static void main(String[] args) {
java.util.Random r=new java.util.Random();
for(int i=0;i<10;i++){
System.out.println(r.nextInt());
}
}
带种子:
此种方式,无论程序运行多少次,返回结果都是一样的
public static void main(String[] args) {
java.util.Random r=new java.util.Random(10);
for(int i=0;i<10;i++){
System.out.println(r.nextInt());
}
}
package MyMath;
import java.util.Random;
import java.util.Scanner;
//生成随机数 调用的是系统的方法
public class random {
int h;
static Scanner sc = new Scanner(System.in);
public static void main(String args[])
{
System.out.println("请输入随机数的个数:");
int h=sc.nextInt();
Random random=new Random();
for(int i=0;i<h;i++)
{
System.out.println(random.nextInt());
}
}
}
自己对第三组中方法进行了实现,验证成功。
方法才能调用方法,而System.out.println(x); 是一个内置方法,所以只能放到方法里去调用,不能写在类里.
代码中两个函数定义的类型不同,一个为int 另一个是double
重载方法:定义同名,但是具有不同的参数原形的方法(同一类中的两个或两个以上的方法可以有同一个名字,只要他们的参数声明表类型不同)!!!
以上是关于Math.random()问题的主要内容,如果未能解决你的问题,请参考以下文章