`

java Romdom例子

阅读更多
random.netInt()如果括号里加上100,那就是生成0-100(不包括100)的随机数,那么,如果括号里不加参数,那么生成的是多少位数的随机数?是0-10吗?
AA:
从java的源代码里可以看到:
/*
* @return the next pseudorandom, uniformly distributed {@code int}
* value from this random number generator’s sequence
*/
public int nextInt() {
return next(32);
}


它调用了next(int)方法, 返回的是32位的随机序列值
==========================
  Random函数在flash里是很有用的,能够生成基本的随机数,创建随机的移动,连同随机的颜色和其他更多的作用。在下面这个例子中当您每次按下按钮就会显示一个从-100到100的随机数,这个教程将解释如何做出这个例子连同如何利用Random函数产生其他不同的结果。
  基本的Random函数如下
  Math.random();
  能够产生出0-1之间的任意小数

Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。它可以产生int、long、float、double以及Goussian等类型的随机数。这也是它与java.lang.Math中的方法Random()最大的不同之处,后者只产生double型的随机数
类Random中的方法十分简单,它只有两个构造方法和六个普通方法。

构造方法:
(1)public Random()
(2)public Random(long seed)

Java产生随机数需要有一个基值seed,在第一种方法中基值缺省,则将系统时间作为seed。
普通方法:

(1)public synonronized void setSeed(long seed)
该方法是设定基值seed。
(2)public int nextInt()
该方法是产生一个整型随机数。
(3)public long nextLong()
该方法是产生一个long型随机数。
(4)public float nextFloat()
该方法是产生一个Float型随机数。
(5)public double nextDouble()
该方法是产生一个Double型随机数。
(6)public synchronized double nextGoussian()
该方法是产生一个double型的Goussian随机数。

以下是Random类的各种例子测试:
import java.util.Random;

public class RandomNumber {

	public static void main(String[] args) {

		// 使用java.lang.Math的random方法生成随机数 0-1
		System.out.println("Math.random(): " + Math.random());

		// 使用不带参数的构造方法构造java.util.Random对象
		System.out.println("使用不带参数的构造方法构造的Random对象:");
		Random rd1 = new Random();
		// 产生各种类型的随机数
		// 按均匀分布产生整数
		System.out.println("int: " + rd1.nextInt());
		// 按均匀分布产生长整数
		System.out.println("long: " + rd1.nextLong());
		// 按均匀分布产生大于等于0,小于1的float数[0, 1)
		System.out.println("float: " + rd1.nextFloat());
		// 按均匀分布产生[0, 1)范围的double数
		System.out.println("double: " + rd1.nextDouble());
		// 按正态分布产生随机数
		System.out.println("Gaussian: " + rd1.nextGaussian());

		// 生成一系列随机数
		System.out.print("随机整数序列:");
		for (int i = 0; i < 5; i++) {
			System.out.print(rd1.nextInt() + " ");
		}
		System.out.println();

		// 指定随机数产生的范围
		System.out.print("[0,10)范围内随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			// Random的nextInt(int n)方法返回一个[0, n)范围内的随机数
			System.out.print(rd1.nextInt(10) + " ");
		}
		System.out.println();
		System.out.print("[5,28)范围内随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			// 因为nextInt(int n)方法的范围是从0开始的,
			// 所以需要把区间[5,28)转换成5 + [0, 23)。
			System.out.print(5 + rd1.nextInt(23) + " ");
		}
		System.out.println();
		System.out.print("利用nextFloat()生成[0,99)范围内的随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			System.out.print((int) (rd1.nextFloat() * 100) + " ");
		}
		System.out.println();
		System.out.println();

		// 使用带参数的构造方法构造Random对象
		// 构造函数的参数是long类型,是生成随机数的种子。
		System.out.println("使用带参数的构造方法构造的Random对象:");
		Random ran2 = new Random(10);
		// 对于种子相同的Random对象,生成的随机数序列是一样的。
		System.out.println("使用种子为10的Random对象生成[0,10)内随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			System.out.print(ran2.nextInt(10) + " ");
		}
		System.out.println();
		Random ran3 = new Random(10);
		System.out.println("使用另一个种子为10的Random对象生成[0,10)内随机整数序列: ");
		for (int i = 0; i < 10; i++) {
			System.out.print(ran3.nextInt(10) + " ");
		}
		System.out.println();
		
	}
}

执行结果:
Math.random(): 0.03900179772838652
使用不带参数的构造方法构造的Random对象:
int: -270073819
long: 7255466478054014832
float: 0.4808815
double: 0.6083990998389226
Gaussian: -0.9127617087700918
随机整数序列:-2019302565 -1633933993 -236750885 2020511907 619139053
[0,10)范围内随机整数序列: 3 6 7 1 9 8 4 0 4 8
[5,23)范围内随机整数序列: 8 14 27 14 23 23 23 15 24 11
利用nextFloat()生成[0,99)范围内的随机整数序列: 52 88 93 62 71 66 62 38 72  94

使用带参数的构造方法构造的Random对象:
使用种子为10的Random对象生成[0,10)内随机整数序列:
3 0 3 0 6 6 7 8 1 4
使用另一个种子为10的Random对象生成[0,10)内随机整数序列:
3 0 3 0 6 6 7 8 1 4


ran2和ran3生成的随机数序列是一样的如果使用两个没带参数构造函数生成的Random对象, 则不会出现这种情况,这是因为在没带参数构造函数生成的Random对象的种子缺省是当前系统时间的毫秒数。另外,直接使用Random无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类
分享到:
评论

相关推荐

    90个java-swing基础例子.zip

    在这个"90个java-swing基础例子.zip"压缩包中,你将找到90个不同的示例,涵盖了Swing的基础用法,这对于学习和理解Swing的各种功能非常有帮助。 1. **Swing组件**:Swing 提供了许多组件,如按钮(JButton),文本框...

    java递归例子

    java递归小例子,供初学者学习使用。九九递归

    JAVA入门程序例子

    这个名为"JAVA入门程序例子"的压缩包提供了初学者学习Java语言的良好资源,涵盖了基础语法、J2SE常用包的运用、Java Swing图形界面设计以及JDBC数据库连接技术。 1. **JAVA语法基础**: - **变量与数据类型**:...

    java1200例子百度云

    java1200例子百度云 java1200例子百度云 java1200例子百度云

    company--java小例子

    在“company--java小例子”这个压缩包中,我们看到的是一系列针对初学者的Java编程实例。Java是一种广泛使用的面向对象的编程语言,以其跨平台性、稳定性和高效性而受到开发者们的青睐。这个压缩包很可能是为了帮助...

    C调用java例子

    标题 "C调用Java例子" 涉及到的是跨语言编程的一个常见场景,即如何在C语言程序中调用Java方法。这种技术通常在嵌入式开发、系统级编程或者利用C的性能优势处理底层任务,同时又需要利用Java丰富的类库时使用。以下...

    易语言JAVA调用 例子

    4. **源码使用说明.txt**:这是一个文本文件,提供了如何使用这个例子的详细步骤和注意事项,包括如何配置环境、如何调用Java方法等。通常,这样的说明文档对于初学者来说非常有帮助,因为它解释了技术细节和实践...

    JAVA代码大全的例子

    "JAVA代码大全的例子"提供了一套全面的实例,对于初学者来说是极好的学习资源。这个压缩包包含了一系列的Java代码示例,旨在帮助学习者理解和掌握Java编程的基本概念和高级特性。 首先,Java的核心特性包括类、对象...

    java java入门例子 包含说明和注释

    java java java入门例子 包含说明和注释

    Java 语言基础例子代码.rar

    这个名为"Java语言基础例子代码.rar"的压缩包提供了一系列基础Java编程的实例,旨在帮助初学者更好地理解和掌握Java编程的基本概念和操作。这些例子涵盖了数组、数学算法以及字符串处理等核心主题,对于学习Java的...

    非常好的java例子44

    非常好的java例子44非常好的java例子44

    java线程分析java project例子

    java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。

    java 执行sql脚本 例子

    java 执行sql脚本 例子java 执行sql脚本 例子java 执行sql脚本 例子java 执行sql脚本 例子java 执行sql脚本 例子java 执行sql脚本 例子java 执行sql脚本 例子java 执行sql脚本 例子java 执行sql脚本 例子java 执行...

    一些Java实验的例子

    "一些Java实验的例子"这个标题表明我们即将探讨的是与Java编程相关的实践性学习资源,可能是包含一系列的代码示例或者小型项目,旨在帮助初学者或有经验的开发者深化对Java语言的理解。 描述中提到的“我找的一些...

    上传照片 java例子

    这个"上传照片 java例子"提供了一个不依赖任何框架或插件的自定义实现,对于初学者或需要理解基本上传逻辑的开发者来说,非常有价值。下面我们将详细探讨Java中实现照片上传的关键知识点。 首先,理解HTTP协议中的...

    java经典10个例子

    这个名为“java经典10个例子”的压缩包很可能包含了十个能够帮助初学者和有经验的开发者更好地理解和运用Java语言的关键示例。以下是这十个例子可能涵盖的知识点: 1. **Hello, World!** - 这是每个编程语言的入门...

    java学习150个经典的例子

    "java学习150个经典的例子"是一个极好的资源,它涵盖了Java基础学习的各个方面,帮助初学者和进阶者深化对Java的理解并提升编程技能。 1. **基本语法与数据类型**:Java的基础包括关键字、标识符、变量、常量、数据...

    java应用例子一百个

    在本系列的“Java应用例子一百个”中,我们看到几个关键的Java编程概念,非常适合初学者学习。这里,我们将详细讨论几个例子,包括数据类型的自动转换、键盘输入数据以及不同类型之间的转换。 首先,让我们来看【例...

    Java 调用wsdl例子

    Java 调用 WSDL 例子 Java 调用 WSDL 例子是指使用 Java 语言来调用远程的 Web 服务,该 Web 服务是通过 WSDL 文件发布的。在 WSDL 文件中,包含了该 Web 服务暴露在外面的接口信息。 WSDL 文件是 Web 服务描述...

    微信java后台例子

    微信的后台的一个java小李子

Global site tag (gtag.js) - Google Analytics