for(int i=0; i<5; i++ ){
randomInt = random.nextInt(range+1);
returnValue = returnValue + randomInt;
System.out.println(returnValue);
做一个简单说明:
(1)
range
:是代表随机生成数的最大值。
(2)
random.nextInt(range+1)
:获取指定范围的随机数。比如:在上面的代码中range=9,说明生成的随机数在0~8中产生,因为nextInt(a)中a的取值是[0,a) ,是从0开始的,所以上面代码中才要把range+1。
举个例子就能很好理解:
SecureRandom random = new SecureRandom();
String returnValue = "";
int randomInt = 0;
int range = 1;
for(int i=0; i<5; i++ ){
randomInt = random.nextInt(range);
returnValue = returnValue + randomInt;
System.out.println(returnValue);
设定range=1,然后nextInt()中的range也不加上1 。可以看出只会出0这个数字。
(3)
for循环的i值
:上面代码设定的是5,所以只会生成5位随机数。根据需求更改即可。
2.生成1位10000之内的随机数
SecureRandom random = new SecureRandom();
String returnValue = "";
int randomInt = 0;
int range = 10000;
randomInt = random.nextInt(range);
returnValue = returnValue + randomInt;
System.out.println(returnValue);
这个没啥好讲解的,去掉for循环,增大随机数范围即可。
1.生成5位0~9的随机数SecureRandom random = new SecureRandom();String returnValue = "";int randomInt = 0;int range = 9;for(int i=0; i<5; i++ ){ randomInt = random.nextInt(range+1); returnValue = returnValue + randomInt;}System.out.println(retur
Java
生成随机数
一、使用math方法,Math.
random
()随机生成一个double类型[0,1)
int num = (int)(Math.
random
()*99);
//生成1~99的随机数
二、使用
Random
方法
生成随机数
public static void test
Random
() {
Random
random
= new
Random
();
random
.setSeed(100L);
for(int i = 0 ; i <
文章目录加密强随机数
Secu
re
Random
1、
Secu
re
Random
应用场景2、如何创建
Secu
re
Random
实例3、正确使用的示例
加密强随机数
Secu
re
Random
1、
Secu
re
Random
应用场景
第一个,由于当种子相同的时候,生成的随机数完全相同
第二个,当随机数生成量较大时,
Random
存在性能问题
所以,当需要大量随机数且对随机数安全性有要求的时候,使用Sec...
// 不推荐使用
Secu
re
Random
.getInstanceStrong()方式获取
Secu
re
Random
(除非对随机要求很高)
//
Secu
re
Random
.getInstanceStrong();依赖操作系统的随机操作
// 比如键盘输入, 鼠标点击, 等等, 当系统扰动很小时, 产生的随机数不够, 导致读取/dev/
random
的进程会阻塞等待. 可以做个小实验, 当阻塞时, 多点击鼠标, 键盘输入数据等操作, 会加速结束阻塞
Secu
re
Random
instanceStrong = Se.
随机数分为:伪随机数和真随机数。后者具有:随机性、不可预测性、不重复性的特点,一般来说都是通过自然界物理信息来生成,例如使用硬件采集器手机温度等信息。
伪随机数分为:弱伪随机数和强伪随机数,后者可以用于密码学领域。
本文重点介绍在
java
下的伪随机数生成方法,包括:
Random
、ThreadLocal
Random
和
Secu
re
Random
。
我们的项目工程里经常在每个函数需要用到
Random
的地方定义一下
Random
变量(如下)
public void doSomethingCommon() {
Random
rand = new
Random
();
在用 sonar 进行检查时,会发现会有如下告警
Creating a new
Random
object each time a
random
...
Secu
re
Random
是
Java
中
用于
生成随机数
的类,它提供了一些安全性更高的随机数生成器,可以用于密码学等安全性要求较高的场景。
以下是
Secu
re
Random
的使用示例:
```
java
import
java
.
secu
rity.
Secu
re
Random
;
public class
Random
Example {
public static void main(String[] args) {
Secu
re
Random
random
= new
Secu
re
Random
();
byte[] bytes = new byte[16];
random
.nextBytes(bytes);
System.out.println("生成的随机数为:" + bytes.toString());
在上面的示例
中
,我们创建了一个
Secu
re
Random
实例,并使用nextBytes方法生成了一个长度为16的随机字节数组。
需要注意的是,由于
Secu
re
Random
生成的随机数是基于系统熵的,因此
生成随机数
的速度可能比较慢。如果只需要生成一些
简单
的随机数,可以考虑使用
Random
类,它的生成速度会更快。但是在安全性要求较高的场景
中
,建议使用
Secu
re
Random
。