1. Random类

  1. public class Random extends Object implements Serializable

此类的实例用于生成伪随机数流。此类使用48位种子。

(1)Random类概述

• 此类用于产生随机数

• 如果用相同的种子创建两个Random实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。

(2)Random的构造方法

•  public Random():没有给种子,用的就是默认种子,是当前时间的毫秒值

•  public Random(long  seed):给固定的种子seed

种子:一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。

(3)Random成员方法

  1. public int nextInt(): 返回是int范围内的随机数
  2. public int nextInt(int n ): 返回的是[0,n)范围内的随机数

(4)代码示例:

  1. package cn.itcast_01;
  2. import java.util.Random;
  3. /*
  4. * Random:产生随机数的类
  5. *
  6. * 构造方法:
  7. * public Random():没有给种子,用的是默认种子,是当前时间的毫秒值
  8. * public Random(long seed):给出指定的种子
  9. *
  10. * 给定种子后,每次得到的随机数是相同的。
  11. *
  12. * 成员方法:
  13. * public int nextInt():返回的是int范围内的随机数
  14. * public int nextInt(int n):返回的是[0,n)范围的内随机数
  15. */
  16. public class RandomDemo {
  17. public static void main(String[] args) {
  18. // 创建对象
  19. // Random r = new Random();
  20. Random r = new Random(1111);// 给定种子,每次返回的随机数是一样的
  21. for (int x = 0; x < 10; x++) {
  22. // int num = r.nextInt();
  23. int num = r.nextInt(100) + 1;
  24. System.out.println(num);
  25. }
  26. }
  27. }

 程序演示效果,如下:

随机数范围是[1,100]([0,100)+1 ---> [1,100])

2. 利用Random实现获取任意范围的随机数案例(面试题)

代码如下:

  1. package com.himi.random;
  2. import java.util.Random;
  3. import java.util.Scanner;
  4. /*
  5. *
  6. *
  7. * 获取任意范围内的随机数
  8. * 构造方法:
  9. * public Random():没有给种子,用的是默认种子,是当前时间的毫秒值
  10. * public Random(long seed):给出指定的种子
  11. * 给定种子后,每次得到的随机数是相同的。
  12. *
  13. * 成员方法:
  14. * public int nextInt():返回的是int范围内的随机数
  15. * public int nextInt(int n):返回的是[0,n)范围的内随机数
  16. */
  17. public class RandomDemo2 {
  18. public static void main(String[] args) {
  19. Scanner input = new Scanner(System.in);
  20. System.out.println("请输入开始数:");
  21. int start = input.nextInt();
  22. System.out.println("请输入结束数:");
  23. int end = input.nextInt();
  24. System.out.print("[");
  25. for(int i=0; i<20; i++) {
  26. if(i==19) {
  27. System.out.print(getRandom(start,end)+"]");
  28. break;
  29. }
  30. System.out.print(getRandom(start,end)+",");
  31. }
  32. }
  33. /**
  34. * 返回[start,end]区间中的随机整数
  35. * @param start
  36. * @param end
  37. * @return
  38. */
  39. private static int getRandom(int start, int end) {
  40. /**
  41. *[0,end-start+1)---->[start,end+1) == [start,end]
  42. */
  43. return new Random().nextInt(end-start+1)+start;
  44. }
  45. }

程序运行结果如下:

Java基础知识强化82:Random类概述和方法使用的更多相关文章

  1. Java基础知识强化105:打印数组的方法总结

    1. 使用for循环打印数组. 2. 使用Arrays工具类,将数组转化为有序的List打印出来. 3. 使用Arrays工具类,使用Arrays.toString()输出数组内容. 上面三种方法打印 ...

  2. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  3. Java基础知识强化之集合框架笔记68:Collections类概述和成员方法(备注:Collection 和 Collections区别)

    1. Collections类概述: 针对集合操作的工具类,都是静态方法.  2. Collection 和 Collections的区别: Collections是个java.util下的类,它包含 ...

  4. Java基础知识强化94:Calendar类之Calendar概述和获取日历字段的方法

    1. Calendar类概述:       Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并 ...

  5. Java基础知识强化89:Date类之Data类概述及其方法

    1. Date类概述 类Date表示特定的瞬间,精确到毫秒 2. 构造方法 public Date():根据当前默认毫秒值创建日期对象 public Date(long date):根据给定的毫秒值创 ...

  6. Java基础知识强化88:BigDecimal类之BigDecimal类引入和概述 以及 BigDecimal的使用(加减乘除)

    1. BigDecimal类概述: 由于在运算的时候,float类型和double很容易丢失精度.所以为了能够精确的表达.计算浮点数,Java提供了BigDecimal. BigDecimal:不可变 ...

  7. Java基础知识强化86:BigInteger类之BigInteger概述和构造方法

    1. BigInteger类概述   可以让超过Integer范围内的数据进行运算 2. 构造方法: public BigInteger(String val) 3. 代码示例: package cn ...

  8. Java基础知识强化36:StringBuffer类之StringBuffer的概述

    1. StringBuffer类概述: (1)String的缺陷: 我们如果对字符串进行拼接操作,每次拼接,都会构造一个新的String对象,既耗时,又浪费空间.如下图: (2)StringBuffe ...

  9. Java基础知识强化91:DateFormat类之DateFormat实现日期和字符串的相互转换

    1. DateFormat类概述: DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间. 是抽象类,所以使用其子类SimpleDateFormat 2.  ...

随机推荐

  1. 合(析)取范式转主合(析)取范式--》Java实现

    这次老师布置了如下上机作业,不限语言.思前想后,问了几个大神,说了一堆不知道什么鬼的算法名称.... 经过一番百度,发现Java可以包含库然后使用JavaScript的一些函数,其中eval() 函数 ...

  2. TCP连接的状态分析

    1.先来了解一下TCP连接建立与关闭过程中的各种状态: CLOSED:初始状态,表示没有任何连接.LISTEN:Server端的某个Socket正在监听来自远方的TCP端口的连接请求.SYN_SENT ...

  3. ES5严格模式

    http://www.cnblogs.com/snandy/p/3428171.html 介绍了由ECMA262规范定义的Javascript标准,旨在改善错误检查功能并且标识不会延续到未来js版本的 ...

  4. underscorejs-findWhere学习

    2.8 findWhere 2.8.1 语法: _.findWhere(list, predicate) 2.8.2 说明: 对list集合的每个对象依次与predicate对象进行匹配,匹配成功则立 ...

  5. ajax+XMLHttpRequest里的FormData实现图片异步上传

    发这篇博客的时候我是自己在研究这个XMLHttpRequest请求,在别人的博客上面知道XMLHttpRequest新加了一个FormData的东西,好像现在APP请求后台也有用这种方式的吧. 别的不 ...

  6. Delphi-Delete 过程

    过程名称 Delete 所在单元 System 过程原型 procedure Delete ( var Source : string; StartChar : Integer; Count : In ...

  7. MLlib-分类与回归

    MLlib支持二分类,多酚类和回归分析的多种方法,具体如下: 问题类别 支持方法 二分类 线性支持向量机, 逻辑回归,决策树,朴素贝叶斯 多分类 决策树,朴素贝叶斯 回归 线性最小二乘,Lasso,r ...

  8. BZOJ 1688: Disease Manangement (子集枚举)

    Disease Manangement Q - 枚举子集 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d &a ...

  9. ASP.NET MVC的Action Filter

    一年前写了一篇短文ASP.NET MVC Action Filters,整理了Action Filter方面的资源,本篇文章详细的描述Action Filter.Action Filter作为一个可以 ...

  10. HTML 表格、区块、其他常用控件

    1. HTML 表格 主要关键字: table:表格: table border 属性:定义边框 -- <table border="1">: caption:表名: ...