在Java中我们可以使用java.util.Random
类来产生一个随机数发生器。它有两种形式的构造函数,分别是Random()
和Random(long seed)
。Random()使用当前时间即System.currentTimeMillis()
作为发生器的种子,Random(long seed)使用指定的seed作为发生器的种子。
随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。
1、生成随机数
Random random = new Random();
Random random = new Random(100);//指定种子数100
random调用不同的方法,获得随机数。
如果2个Random对象使用相同的种子(比如都是100),并且以相同的顺序调用相同的函数,那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同:
import java.util.Random;
public class RandomOne {
public static void main(String[] args) {
Random random1 = new Random(100);
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
Random random2 = new Random(100);
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());
}
}
输出结果如下:
-1193959466
0.7346627
false
-1193959466
0.7346627
false
2、指定范围内的随机数
随机数控制在某个范围内,使用模数运算符%
import java.util.Random;
public class RandowTwo {
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i < 5; i++) {
System.out.println(Math.abs(random.nextInt()) % 10);
}
}
}
输出结果如下:
5
5
6
4
8
备注:
1、如果想要生成100范围内的随机数,则用100来取模即可;
2、获得的随机数有正有负的,用Math.abs使获取数据范围为非负数
3、获取指定范围内的不重复随机数
import java.util.Random;
public class RandomThree {
public static void main(String[] args) {
int[] intRet = new int[6];
int intRd = 0; //存放随机数
int count = 0; //记录生成的随机数个数
int flag = 0; //是否已经生成过标志
while (count < 6) {
Random rdm = new Random(System.currentTimeMillis());
intRd = Math.abs(rdm.nextInt()) % 32 + 1;
for (int i = 0; i < count; i++) {
if (intRet[i] == intRd) {
flag = 1;
break;
} else {
flag = 0;
}
}
if (flag == 0) {
intRet[count] = intRd;
count++;
}
}
for (int t = 0; t < 6; t++) {
System.out.println(t + "->” + intRet[t]);
}
}
}
输出结果如下:
0->9
1->17
2->6
3->1
4->22
5->4
[整理自网络]
分类目录
- arch/management (17)
- computer (38)
- java/j2ee (305)
- lnmpa (237)
- mac/iphone/ipad/android (11)
- mysql/oracle/postgresql (126)
- os/software (74)
- other (518)
- python (6)
- redis/memcached/mongo (31)
- sitebuild (143)
随便看看
标签云
程序员 创业 人生箴言 eclipse 快捷键 术语 索引 unix命令 vim wordpress java学习笔记 环境变量 oracle内置函数 index 人生 数据类型 nohup tuxedo mysql学习笔记 MS-DOS命令 servlet spring 职场进阶 职业进阶 服务器选购 服务器选型 apache JPA MongoDB 注解 tomcat 子女教育 jquery maven JVM aix命令 网络营销 java异常 seo 人生规划 关键字 css 网络推广 struts 系统优化 成长 frame iframe bluehost jdbc select 我的信仰 oracle函数 cookie HashMap 站长工具 乱码 ArrayList secureCRT jsp session tail find halt 事务 oracle单记录函数 算法 URL window table javascript操作表单元素 String 字符串处理 健康 http 域名 情感 more google A记录 域名解析 netstat 弹出对话框 弹出窗口 框架集 框架 excel 字符串 javascript函数 showModalDialog nginx number 数组 sql frameset 开源程序 java数组 软件 oracle服务友情链接
收藏链接