`

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 web定时器例子

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

    java递归例子

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

    java导出例子

    在Java编程语言中,"导出例子"通常指的是将数据或程序结果输出到文件、数据库或其他存储媒介的过程。这涉及到I/O(输入/输出)操作,是Java开发中不可或缺的一部分。下面我们将深入探讨Java导出数据的相关知识点。 ...

    易语言JAVA调用 例子

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

    JAVA代码大全的例子

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

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

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

    Java开发宝典的所有例子

    在Java开发过程中,源代码是程序员的工具,通过阅读和运行这些例子,你可以直观地了解Java语法、面向对象编程的概念、异常处理、集合框架、多线程、网络编程、I/O流、数据库操作等核心知识点。下面将对这些主要知识...

    超级经典java例子,涉及到大部分java类库的使用

    "超级经典java例子"集合很可能包含了一系列展示Java核心特性和类库应用的代码示例。这些例子可以帮助开发者深入理解Java语言,并熟悉如何有效地利用Java API来解决实际问题。 1. **基础语法与数据类型**:Java提供...

    Java 语言基础例子代码.rar

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

    java简单程序小例子

    "Java简单程序小例子"是学习Java编程的初级阶段常见的实践项目,通常包含一系列基础的代码示例,帮助初学者理解语言的基本语法和常用结构。在这个项目中,"java2核心"可能指的是Java 2 Platform Standard Edition ...

    非常好的java例子44

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

    java 注册登陆例子

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

    java线程分析java project例子

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

    kafka java maven例子

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

    java例子源码

    在这个“java例子源码”的压缩包中,包含了多个Java编程的基础示例,旨在帮助初学者理解语言的核心概念以及一些常见的算法和数据结构。下面将详细阐述这些知识点。 1. **Fib序列**:斐波那契数列是计算机科学中一个...

    java经典10个例子

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

    java学习150个经典的例子

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

Global site tag (gtag.js) - Google Analytics