`

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无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类
分享到:
评论

相关推荐

    100个Java经典例子后端- Java

    "100个Java经典例子后端- Java"这个资源显然旨在帮助开发者通过实践加深对Java的理解,尤其在后端开发领域。下面我们将深入探讨这些经典例子可能涵盖的知识点。 1. **基础语法**: 包括变量声明、数据类型(如基本...

    java小例子

    "java小例子"可能是指一系列的简单程序,用于演示Java语言的关键特性或常见编程概念。在学习Java时,通过编写和分析小例子是理解语言语法和逻辑的有效方式。 在Java编程中,例子通常会涵盖以下几个方面: 1. **...

    Java程序例子

    这个名为"Java程序例子"的压缩包文件显然包含了帮助初学者或有经验的开发者深入理解Java编程的各种实例。通过这些实例,我们可以学习到如何在实际场景中应用Java语言的关键概念和技术。 1. **基础语法**: 包含的...

    Java100个经典例子

    Java 编程基础知识点总结 Java 是一种广泛使用的高级编程语言,它提供了强大的功能和灵活的编程模型。本文将对 Java 编程语言的基础知识点进行总结,涵盖 Java 语言的基本概念、数据类型、变量、运算符、控制结构、...

    经典java继承例子

    在这个经典的Java继承例子中,我们将深入理解这一机制。 首先,我们要明确的是,继承的主要目的是减少代码冗余,提高代码的可维护性和可扩展性。在Java中,我们使用`extends`关键字来表示一个类继承自另一个类。...

    java100个经典例子

    "java100个经典例子"提供了丰富的示例代码,帮助初学者逐步进阶。以下是对几个例子的详细解释: 1. **第一个Java程序**: 这是每个Java初学者都会遇到的第一个Hello World程序,展示了Java程序的基本结构。`public...

    java web定时器例子

    在上述例子中,`reportCurrentTime` 方法每隔5秒会被执行一次。`fixedRate` 参数控制了执行间隔。 三、 Quartz 库 对于更复杂的需求,如复杂的调度策略、集群支持等,可以考虑使用Quartz库。Quartz是一个开源的...

    JAVA入门程序例子

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

    java1200例子百度云

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

    company--java小例子

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

    Java 小例子合集 demo

    在本Java小例子合集中,我们涵盖了多个关键的编程概念和技术,这些都是在IT行业中至关重要的。以下是这些示例代码所涉及的知识点的详细说明: 1. **AES加密与解密**: AES(Advanced Encryption Standard)是现代...

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

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

    JAVA实验例子代码

    让我们通过以下几个实验例子来深入了解Java的基础知识。 例子1展示了Java程序的基本结构。一个简单的"Hello, World!"程序通常被视为入门的第一步。`public class Hello`定义了一个公共类Hello,`main`方法是程序的...

    Java 语言基础例子代码.rar

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

    java 注册登陆例子

    此外,"damo"标签可能是指这个例子是一个示例代码或模板,帮助初学者快速理解和实践Java Web开发中的注册登录功能。学习此例子时,建议读者理解每一行代码的作用,动手运行并调试,以加深理解。 总之,"java 注册...

    kafka java maven例子

    这个“kafka java maven例子”是针对初学者的一个很好的起点,旨在帮助理解如何使用Java和Maven来操作Kafka。下面将详细阐述这个实例中涉及的核心知识点。 1. **Apache Kafka**: Kafka是一个高吞吐量、分布式的发布...

    上传照片 java例子

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

    c调用java的例子

    标题“c调用java的例子”揭示了我们将讨论一个实际的用C语言调用Java方法的案例。 首先,我们需要理解C和Java之间的接口是如何建立的。Java提供了一个名为Java Native Interface (JNI) 的框架,允许Java代码与本地...

    Flex + Java简单例子

    【Flex + Java简单例子】是关于使用Flex与Java进行跨域数据交互的一个基础教程,主要涉及Flex客户端和Java服务器端的配置与开发。这个例子旨在展示如何通过BlazeDS库在Flex前端和Java后端之间建立通信。 首先,我们...

Global site tag (gtag.js) - Google Analytics