在看think in java里41页有句代码random() rand=new random(47);
加个47什么意思,看他的解释没看明白
问题补充:
种子是什么意思。。。?就是从47开始随即生成数么?不加又会怎样?
答:
这个47就是一个种子。你也可以用其它的整数如:1,48。。。。。等
不同的种子会产生不同的随机数。thinking in java的作者他用了一个47.也没什么特殊。用其它也可以
补------------
不是从47开始生成数。这么说吧:
Random() rand1=new Random(47);
Random() rand2=new Random(27);
则rand1.nextInt()的值不会等于rand2.nextInt()
就是加了一个种子后就可以使你调用方法后产生的数值不相同。
Random() rand=new Random();这样不加数字也可以。种子就是用来区分各个Random对象吧,可以说。
下面是官方解释:
“此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式对其进行修改(请参阅 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 节)。
如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证属性的实现,为类 Random 指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法,只要其符合所有方法的常规协定即可。
二.
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随机数。
例2 RandomApp.java。
//import java.lang.*;
import java.util.Random;
public class RandomApp{
public static void main(String args[]){
Random ran1=new Random();
Random ran2=new Random(12345);
//创建了两个类Random的对象。
System.out.println("The 1st set of random numbers:");
System.out.println("\t Integer:"+ran1.nextInt());
System.out.println("\t Long:"+ran1.nextLong());
System.out.println("\t Float:"+ran1.nextFloat());
System.out.println("\t Double:"+ran1.nextDouble());
System.out.println("\t Gaussian:"+ran1.nextGaussian());
//产生各种类型的随机数
System.out.print("The 2nd set of random numbers:");
for(int i=0;i<5;i++){
System.out.println(ran2.nextInt()+" ");
if(i==2) System.out.println();
//产生同种类型的不同的随机数。
System.out.println();
}
}
}
分享到:
相关推荐
### Java李兴华学习笔记之Java常用类库 #### 一、课程介绍及知识点概览 根据提供的资料,“Java李兴华学习笔记之Java常用类库”这份文档来源于北京MLDN软件实训中心的教学资料,主要涵盖了Java编程语言中常用类库...
### Java学习笔记:Java.util包中的重要API及应用 #### 随机数生成与操作:`java.util.Random` 在Java编程中,随机数的生成是常见需求之一,尤其是在模拟、游戏开发等领域有着广泛的应用。Java标准库中的`java....
这份"Java基础学习笔记.zip"包含了多个主题,涵盖了Java语言的基础到进阶内容,非常适合初学者和有经验的开发者复习巩固。 首先,我们来看"day03【List、Set】-笔记.pdf",这部分主要讲解了Java集合框架中的两种...
以下是对"Javajdk5学习笔记"中可能包含的知识点的详细解析: 1. **自动装箱与拆箱**:JDK 5引入了自动装箱和拆箱功能,使得基本类型和它们对应的包装类之间可以无缝转换,提高了代码的简洁性。例如,`Integer i = ...
### Java学习笔记整理 #### 1. Java简介 ##### 1.1 计算机编程和开发语言 计算机系统由硬件系统和软件系统组成。软件系统又进一步细分为系统软件和应用软件。其中,系统软件包括操作系统、编译系统、数据库系统等...
在Java中,我们可以使用java.util.Random类来生成随机数。比如,设计一个抽奖系统,可以设定一个奖池,然后生成一个随机索引,对应奖池中的一个奖项。为了确保公平,你需要理解概率的基本原理,并确保所有奖项有等...
本学习笔记将聚焦于JDK 5.0的关键更新,旨在帮助开发者理解和掌握这个里程碑式的Java版本。 1. **类型注解 (Type Annotations)** JDK 5.0引入了泛型,允许在类、接口和方法声明中使用类型参数,提高了代码的类型...
2. **输入输出操作**:在Java中,可以使用`java.util.Scanner`类进行基本的用户输入,如`nextInt()`、`nextFloat()`等方法读取整数和浮点数。若要读取包含空格的字符串,可以使用`nextLine()`。另外,`java.io....
此外,我们还学习了获取随机数的两种方式:使用java.lang.Math.random()方法获取一个0-1(不含1)之间的double值,使用java.util.Random中的nextXXX方法获取1-100之间的随机数。 最后,我们学习了final关键字的使用...
【狂神说笔记】是一份深受Java学者喜爱的个人学习笔记,它以其深入浅出的讲解方式和实用的内容,赢得了广大编程爱好者的好评。这份笔记主要聚焦于Java编程语言的基础和进阶知识,旨在帮助Java学者更好地理解和掌握这...
### Java核心API知识点详解 #### 一、集合框架 **1.1 什么是集合** 集合是Java编程语言中用于存储和操作多个元素的一种容器。它提供了动态管理元素的...以上就是Java核心API中的关键知识点,希望对学习者有所帮助。
- 或使用`java.util.Random`类生成指定范围内的随机数。 9. **访问修饰符**: - `private`: 仅限类内部访问 - `public`: 公开,任何地方都能访问 - `protected`: 同一包内和子类可以访问 - `default`: 同一包...
- Java的`java.util.Random`类用于生成随机数。创建一个Random对象后,我们可以调用`nextInt(int bound)`方法来获取指定范围内的随机整数。对于骰子,我们通常需要在1到6之间生成随机数。 3. **用户交互**: - ...
在Java中实现随机点名功能,我们可以使用`java.util.Random`类。这个类提供了生成随机数的方法,可以用来选取名字。例如,我们可以创建一个ArrayList存储所有名字,然后使用Random类的nextInt()方法生成一个在0到...
6. **随机数**:`java.util.Random`类用于生成随机数。例如,`r.nextInt(10)`会生成一个0到9之间的随机整数。 7. **位运算**:位运算包括取模(%),除法(/),加法(+),减法(-),乘法(*),左移(),右移...
- **随机数生成**:通过`java.util.Random`类可以生成随机数。 - 获取指定范围内的随机整数:`int num = r.nextInt(上限);`(上限不包含在内) 以上是《Java学习(二)》的主要知识点概述,这些内容对于初学者来说...
### Java基础知识笔记总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是由Sun ...
- 使用 `scala.util.Random.nextInt` 生成随机数以确定文件名和选择句子。 - 创建 `PrintWriter` 对象并将随机选择的句子写入文件。 - 关闭文件以确保内容被正确写入。 #### 实验二:实时数据分析 - **目标**:...