Java常用类中随机数讲解与实践

简介: Java常用类中随机数讲解与实践

项目中时长用到不同长度的随机数,这里简要说明一些方法。

【1】Random

代码实例一如下:

Random random = new Random();
int nextInt = random.nextInt();

其nextInt()的JavaDoc如下:

Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence. 
The general contract of nextInt is that one int value is pseudorandomly generated and returned. 
All 2 32(The 32 square of 2) possible int values are produced with (approximately) equal probability. 

从随机数生成序列中返回下一个伪随机,均匀分布的int 值。2的32次方在内的int值返回的概率是相等的。


代码实例一如下:

Random random = new Random();
int nextInt2 = random.nextInt(10);
System.out.println(nextInt2);

其nextInt(10)的JavaDoc如下:

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence. 
The general contract of nextInt is that one int value in the specified range is pseudorandomly generated and returned.
 All bound possible int values are produced with (approximately) equal probability.

主要意思 : 返回 0-指定值区间的一个int 值 ,用区间表示即 [0 , end)。如nextInt(10)返回区间 [0 , 10)。


举例如返回六位随机数:

Random random = new Random();
int nextInt2 = random.nextInt(10)+100000;

这样返回的相同数概率太大了,换成如下方法:

Random random = new Random();
StringBuilder stringBuilder = new StringBuilder();
for(int i=1;i<7;i++){
  int nextInt2 = random.nextInt(10);
  stringBuilder.append(String.valueOf(nextInt2));
}
System.out.println(stringBuilder.toString());

或者试试如下方法:

String sources = "0123456789"; // 加上一些字母,就可以生成pc站的验证码了  
Random rand = new Random();  
StringBuffer flag = new StringBuffer();  
for (int j = 0; j < 6; j++){  
    flag.append(String.valueOf(sources.charAt(rand.nextInt(9))));  
}  
System.out.println(flag.toString());  

【2】Math.random()

代码实例一如下:

double random = Math.random();
System.out.println(random);

其random()的Javadoc如下:

Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range. 

主要意思: 从指定范围大约均匀分布的值中伪随机选择一个返回,该值为区间在[0.0 , 1.0)之间的double值。

举例如返回六位随机数:

int a=(int) ((Math.random()*9+1)*100000);
System.out.println(a);
目录
相关文章
|
21小时前
|
网络协议 Java
Java中如何使用Socket类检测端口是否存在
Java中如何使用Socket类检测端口是否存在
12 4
|
21小时前
|
存储 缓存 前端开发
Java串口通信技术探究3:RXTX库线程 优化系统性能的SerialPortEventListener类
Java串口通信技术探究3:RXTX库线程 优化系统性能的SerialPortEventListener类
9 3
|
22小时前
|
存储 Java
Java的`java.io`包包含多种输入输出类
Java的`java.io`包包含多种输入输出类。此示例展示如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着分配一个`byte`数组存储流中的数据。通过`read()`方法读取数据,然后将字节数组转换为字符串打印。最后关闭输入流释放资源。`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
7 1
|
1天前
|
并行计算 Java 数据处理
Java中的多线程编程:基础知识与实践
【5月更文挑战第1天】本文将深入探讨Java中的多线程编程,包括其基本概念、实现方式以及实际应用。我们将从理论和实践两个角度出发,详细解析线程的创建、启动、控制以及同步等关键问题,并通过实例代码演示如何在Java中有效地使用多线程。
|
2天前
|
Java 程序员
Java中的多线程编程:从理论到实践
【5月更文挑战第1天】 在现代计算机科学中,多线程编程是一个重要的概念,它允许程序员在同一程序中并行运行多个任务。Java作为一种广泛使用的编程语言,提供了一套丰富的多线程编程工具。本文将介绍Java中多线程编程的基本概念,包括线程的创建、启动、控制和同步,以及一些常见的多线程问题和解决方案。
|
2天前
|
存储 Java 程序员
Java中的多线程编程:基础知识与实践
【5月更文挑战第1天】在现代计算机科学中,多线程是一种重要的并行计算技术,允许多个执行流程并发运行。本文将深入探讨Java语言中的多线程编程,从基础概念到实际应用,帮助读者理解多线程的核心原理,并通过实例学习如何在Java中创建和管理线程。我们将涵盖线程的生命周期、同步机制以及如何利用高级类如Executor框架来优化多线程应用的性能。通过本文的学习,读者将具备设计和实现高效、稳定多线程Java应用程序的能力。
6 2
|
2天前
|
Java 调度 开发者
Java中的多线程编程:基础知识与实践
【4月更文挑战第30天】 在现代软件开发中,多线程编程是提高程序性能和响应能力的关键。Java作为一款广泛使用的编程语言,提供了丰富的多线程支持。本文将介绍Java多线程的基础概念、实现方法以及常见问题的解决策略。我们将从线程的创建和管理入手,逐步深入到同步机制、死锁避免以及高级并发工具类的应用。通过实例代码演示和理论分析,旨在帮助读者掌握Java多线程编程的核心技能,提升软件项目的并行处理能力。
|
2天前
|
Java 开发者
Java中三种Set的实现类的用法和区别
Java中三种Set的实现类的用法和区别
|
2天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
9 1
|
2天前
|
安全 Java API
Java 8新特性概述及其对编程实践的影响
【4月更文挑战第30天】本文将详细讨论Java 8的新特性,包括Lambda表达式、Stream API以及Optional类等,并探讨这些新特性如何改变了Java编程的实践。我们将通过实例代码展示这些新特性的用法,并分析其对提高代码可读性和编写效率的影响。