java生成随机数的方法
作者:wo_soul 发布时间:2023-12-12 12:49:51
标签:java,随机数
本文实例讲述了java生成随机数的方法。分享给大家供大家参考。具体实现方法如下:
package com.tool.code;
import java.util.Random;
public class RandomNum {
private static char ch[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
'z', '0', '1' };
//最后又重复两个0和1,因为需要凑足数组长度为64
private static Random random = new Random();
//生成指定长度的随机字符串
public static String createRandomString(int length) {
if (length > 0) {
int index = 0;
char[] temp = new char[length];
int num = random.nextInt();
for (int i = 0; i < length % 5; i++) {
temp[index++] = ch[num & 63];
//取后面六位,记得对应的二进制是以补码形式存在的。
num >>= 6;//63的二进制为:111111
// 为什么要右移6位?因为数组里面一共有64个有效字符。
//为什么要除5取余?因为一个int型要用4个字节表示,也就是32位。
}
for (int i = 0; i < length / 5; i++) {
num = random.nextInt();
for (int j = 0; j < 5; j++) {
temp[index++] = ch[num & 63];
num >>= 6;
}
}
return new String(temp, 0, length);
} else if (length == 0) {
return "";
} else {
throw new IllegalArgumentException();
}
}
//根据指定个数,测试随机字符串函数的重复率
public static double rateOfRepeat(int number){
int repeat=0;
String[] str=new String[number];
for(int i=0;i<number;i++){//生成指定个数的字符串
str[i]=RandomNum.createRandomString(10);
}
for(int i=0;i<number;i++){//查找是否有相同的字符串
for(int j=i+1;j<number-1;j++){
if(str[i].equals(str[j]))
repeat++;
}
}
return ((double)repeat)/number;
}
public static void main(String[] args) {
System.out.println(RandomNum.createRandomString(16)+"-"+RandomNum.createRandomString(16));
double rate=RandomNum.rateOfRepeat(10000);//测试10000次的重复率
System.out.println("重复率:"+rate);
}
}
控制台运行效果如下:
希望本文所述对大家的java程序设计有所帮助。


猜你喜欢
- Android 四种获取屏幕宽度的方法方法一: WindowManager wm = (WindowManager) this
- JAXBContext 设置xml节点属性在使用JAXBContext将javaBean转化为xml时会出现这样的需求:<xml ve
- 继承什么是继承呢?继承(Inheritance)是一种联结类与类的层次模型。指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接
- 延迟加载1 使用延迟加载意义在进行数据查询时,为了提高数据库查询性能,尽量使用单表查询,因为单表查询比多表关联查询速度要快。如果查询单表就可
- 概述 ScrollView也是一个容器,它是FrameLayout的子类,它的主要作用就是将超出物理屏幕的内容显示
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下XmlHelperusing System.Xml;us
- 简介最近学了java基础后对以前不会写的作业深有感触,想起以前各种在网上找资料找别人的代码参考,所以今天特地写了了简单的基于控制台的学生信息
- 安装完jdk环境后,编写第一个java程序hello.java:public class hello{
- 首先提出这样一个问题:如果两个对象不相同,他们的hashCode值一定不相等吗?我们都知道equals和hashCode是Object中的方
- Android自定义View实现等级滑动条的实例实现效果图:思路: 首先绘制直线,然后等分直线绘制点; 绘制点的时候把X值存到集
- 1.使用IDEA新建项目2.选择创建Maven工程3.填写GroupId和ArtifactId4.填写项目名称,与上一步的ArtifactI
- 实现备份短信到xml文件和像短信中插入一条数据一、实现短信将备份到xml文件中在布局文件中定义一个按钮,定义点击事件为copyClickMa
- 以前,使用github(git)结合 IntelliJ IDEA ,可以把自己本地的测试代码,使用github网站,添加到版本管理。这样就可
- 概要应同学邀请,演示如何使用 PyQt5 内嵌浏览器浏览网页,并注入 Javascript 脚本实现自动化操作。下面测试的是一个廉价机票预订
- 本小节内容不多,但是个人感觉比较独立,还是拿出来单讲吧。在开发 IntelliJ Plugin 时,如果需要用到 Gson、OKHttp 等
- Android中SQLite 使用方法详解现在的主流移动设备像android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们
- 本文实例为大家分享了Android项目实现视频播放器的具体代码,供大家参考,具体内容如下VideoView控件是播放视频用的,借助它可以完成
- 已经自学OpencvSharp一段时间了(目前工作用的是C#,就学了Opencvsharp了,vs2015,opencvsharp3),收获
- 在Java SE中,对IO流与集合的操作在应用中比较重要。接下来,我以一个小型项目的形式,演示IO流、集合等知识点在实践中的运用。该项目名称
- 新添加个发文类型insert into mis.zyb_sf_type values('121','榆财法字'