软件编程
位置:首页>> 软件编程>> java编程>> java生成随机数的方法

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生成随机数的方法

希望本文所述对大家的java程序设计有所帮助。

0
投稿

猜你喜欢

  • 类注解@component 标注类,泛指各种组件,类不属于各种分类的时候,用它做标注。@Service 标注类,声明该类为业务层组件,用于处
  • 一、使用mybatis-spring-boot-starter1、添加依赖<dependency>  <grou
  • 新手当在一个类文件中进行了一些操作之后,会造成sout快捷命令无法自动生成。比如操作了import引入其它包之后。主要是对IDEA操作的不熟
  • SpringBoot项目中新增脱敏功能项目背景目前正在开发一个SpringBoot项目,此项目有Web端和微信小程序端。web端提供给工作人
  • Maven打包没有指定主类在使用IDEA开发项目的时候经常会遇到使用Maven打包项目(打成jar包或者zip包),但是之前不太清楚打包插件
  • 在java项目开发过程中,使用properties文件作为配置基本上是必不可少的,很多如系统配置信息,文件上传配置信息等等都是以这种方式进行
  • 前言:小伙伴说能不能用springboot整合一下mybatis多数据源不使用JPA进行数据库连接操作。那么说干就干创建一个springbo
  • 在分布式系统中,配置文件散落在每个项目中,难于集中管理,抑或修改了配置需要重启才能生效。下面我们使用 Spring Cloud Config
  • 本文实例讲述了Java截取字符串的方法。分享给大家供大家参考。具体实现方法如下:public static void main(String
  • 前言春节要到了,看惯了前端各种小游戏,确实做得很好,很精致。但是我也要为后端程序员稍微做一点贡献,做一款java版本的【年兽大作战】。这个游
  • 前言最近数据库大作业要连接数据库,看了很多博客文章终于连接好了,但是没有看到一篇博客是能直接连接完成的,所以在这记录一下希望能帮助大家sql
  • 理解事务之前,先讲一个你日常生活中最常干的事:取钱。比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱
  • 1.官方地址:http://mybatis.plus/guide/generator.html#%E4%BD%BF%E7%94%A8%E6%
  • 1. 概述JDK * 是利用java反射机制 生成一个实现接口的匿名类, 在调用具体方法前调用InvocationHandler来处理Cg
  • Java 反射机制实例详解一、JAVA是动态语言吗?一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,Ja
  • 本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据比如json数据如下:{responseHeader:{status:0
  • JAVA JNI函数的注册过程详细介绍我们在java中调用Native code的时候,一般是通过JNI来实现的,我们只需要在java类中加
  • 前言当你编写一个应用时,你通常都会希望用户能够定制化他们和应用交互的方式,以及应用与系统进行交互的方式。这种方式通常被称为 &ldq
  • 基本概念:类加载的过程大致分为三个阶段1、加载阶段:本阶段主要把class的二进制代码加载进入JVM,并且进行常量池(类名,方法名,字段名)
  • 前言反射是我们框架的灵魂,反射也是我们框架的一个底层基石,没有反射也就没有框架,如果我们学好了反射,对我们阅读框架底层是有很大班助的——阿俊
手机版 软件编程 asp之家 www.aspxhome.com