最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java隨機(jī)數(shù)生產(chǎn)算法實(shí)例

 更新時(shí)間:2017年10月07日 10:20:30   作者:shindoyang  
下面小編就為大家?guī)硪黄猨ava隨機(jī)數(shù)生產(chǎn)算法實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

java提供了Math.random()函數(shù),返回一個(gè)double類型的隨機(jī)數(shù),也有util包里的Random類,可以生成double,int,float,long,bytes等隨機(jī)數(shù)。

但有些業(yè)務(wù)需求,往往需要對(duì)這些方法做一下封裝。比如用固定因子生成32位的3DES算法key值。

下面提供一些封裝的方法:

package test;

import java.util.Random;

public class RandomUtil {

  public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  public static final String LETTERCHAR = "abcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  public static final String NUMBERCHAR = "0123456789";

  /** 
   * 返回一個(gè)定長(zhǎng)的帶因子的固定的隨機(jī)字符串(只包含大小寫字母、數(shù)字)
   * 
   * @param length 
   *      隨機(jī)字符串長(zhǎng)度 
   * @return 隨機(jī)字符串 
   */
  public static String generateStringByKey(int length, int channel) {
    StringBuffer sb = new StringBuffer();
    Random random = new Random(channel);
    for (int i = 0; i < length; i++) {
      sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));
    }
    return sb.toString();
  }

  /** 
   * 返回一個(gè)定長(zhǎng)的隨機(jī)字符串(只包含大小寫字母、數(shù)字)
   * 
   * @param length 
   *      隨機(jī)字符串長(zhǎng)度 
   * @return 隨機(jī)字符串 
   */
  public static String generateString(int length) {
    StringBuffer sb = new StringBuffer();
    Random random = new Random();
    for (int i = 0; i < length; i++) {
      sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));
    }
    return sb.toString();
  }

  /** 
   * 返回一個(gè)定長(zhǎng)的隨機(jī)純字母字符串(只包含大小寫字母) 
   * 
   * @param length 
   *      隨機(jī)字符串長(zhǎng)度 
   * @return 隨機(jī)字符串 
   */
  public static String generateMixString(int length) {
    StringBuffer sb = new StringBuffer();
    Random random = new Random();
    for (int i = 0; i < length; i++) {
      sb.append(ALLCHAR.charAt(random.nextInt(LETTERCHAR.length())));
    }
    return sb.toString();
  }

  /** 
   * 返回一個(gè)定長(zhǎng)的隨機(jī)純大寫字母字符串(只包含大小寫字母) 
   * 
   * @param length 
   *      隨機(jī)字符串長(zhǎng)度 
   * @return 隨機(jī)字符串 
   */
  public static String generateLowerString(int length) {
    return generateMixString(length).toLowerCase();
  }

  /** 
   * 返回一個(gè)定長(zhǎng)的隨機(jī)純小寫字母字符串(只包含大小寫字母) 
   * 
   * @param length 
   *      隨機(jī)字符串長(zhǎng)度 
   * @return 隨機(jī)字符串 
   */
  public static String generateUpperString(int length) {
    return generateMixString(length).toUpperCase();
  }

  /** 
   * 生成一個(gè)定長(zhǎng)的純0字符串 
   * 
   * @param length 
   *      字符串長(zhǎng)度 
   * @return 純0字符串 
   */
  public static String generateZeroString(int length) {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < length; i++) {
      sb.append('0');
    }
    return sb.toString();
  }

  /** 
   * 根據(jù)數(shù)字生成一個(gè)定長(zhǎng)的字符串,長(zhǎng)度不夠前面補(bǔ)0 
   * 
   * @param num 
   *      數(shù)字 
   * @param fixdlenth 
   *      字符串長(zhǎng)度 
   * @return 定長(zhǎng)的字符串 
   */
  public static String toFixdLengthString(long num, int fixdlenth) {
    StringBuffer sb = new StringBuffer();
    String strNum = String.valueOf(num);
    if (fixdlenth - strNum.length() >= 0) {
      sb.append(generateZeroString(fixdlenth - strNum.length()));
    } else {
      throw new RuntimeException("將數(shù)字" + num + "轉(zhuǎn)化為長(zhǎng)度為" + fixdlenth + "的字符串發(fā)生異常!");
    }
    sb.append(strNum);
    return sb.toString();
  }

  /** 
   * 每次生成的len位數(shù)都不相同 
   * 
   * @param param 
   * @return 定長(zhǎng)的數(shù)字 
   */
  public static int getNotSimple(int[] param, int len) {
    Random rand = new Random();
    for (int i = param.length; i > 1; i--) {
      int index = rand.nextInt(i);
      int tmp = param[index];
      param[index] = param[i - 1];
      param[i - 1] = tmp;
    }
    int result = 0;
    for (int i = 0; i < len; i++) {
      result = result * 10 + param[i];
    }
    return result;
  }

  public static void main(String[] args) {
    int channel = 555555;// 測(cè)試因子比生產(chǎn)因子少1
    System.out.println("返回一個(gè)定長(zhǎng)的帶因子的固定的隨機(jī)字符串(只包含大小寫字母、數(shù)字):" + generateStringByKey(32, channel));
    System.out.println("返回一個(gè)定長(zhǎng)的隨機(jī)字符串(只包含大小寫字母、數(shù)字):" + generateString(32));
    System.out.println("返回一個(gè)定長(zhǎng)的隨機(jī)純字母字符串(只包含大小寫字母):" + generateMixString(10));
    System.out.println("返回一個(gè)定長(zhǎng)的隨機(jī)純大寫字母字符串(只包含大小寫字母):" + generateLowerString(10));
    System.out.println("返回一個(gè)定長(zhǎng)的隨機(jī)純小寫字母字符串(只包含大小寫字母):" + generateUpperString(10));
    System.out.println("生成一個(gè)定長(zhǎng)的純0字符串:" + generateZeroString(10));
    System.out.println("根據(jù)數(shù)字生成一個(gè)定長(zhǎng)的字符串,長(zhǎng)度不夠前面補(bǔ)0:" + toFixdLengthString(123, 10));
    int[] in = { 1, 2, 3, 4, 5, 6, 7 };
    System.out.println("每次生成的len位數(shù)都不相同:" + getNotSimple(in, 3));
  }
}

運(yùn)行效果如下:

以上這篇java隨機(jī)數(shù)生產(chǎn)算法實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java OOP三大特征之封裝繼承與多態(tài)詳解

    Java OOP三大特征之封裝繼承與多態(tài)詳解

    本文主要講述的是面向?qū)ο蟮娜筇匦裕悍庋b,繼承,多態(tài),內(nèi)容含括從封裝到繼承再到多態(tài)的所有重點(diǎn)內(nèi)容以及使用細(xì)節(jié)和注意事項(xiàng),內(nèi)容有點(diǎn)長(zhǎng),請(qǐng)大家耐心看完
    2022-07-07
  • idea實(shí)現(xiàn)類快捷生成接口方法示例

    idea實(shí)現(xiàn)類快捷生成接口方法示例

    這篇文章主要介紹了idea實(shí)現(xiàn)類快捷生成接口方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 解析idea內(nèi)嵌瀏覽器翻譯

    解析idea內(nèi)嵌瀏覽器翻譯

    這篇文章主要介紹了解析idea內(nèi)嵌瀏覽器翻譯的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java Springboot自動(dòng)裝配原理詳解

    Java Springboot自動(dòng)裝配原理詳解

    這篇文章主要介紹了詳解SpringBoot自動(dòng)配置原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-10-10
  • RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫分離

    RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫分離

    這篇文章主要介紹了RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫分離,RocketMQ提高消費(fèi)避免Broker發(fā)生單點(diǎn)故障引起B(yǎng)roker上的消息無法及時(shí)消費(fèi),下文關(guān)于了RocketMQ的相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • java編程創(chuàng)建型設(shè)計(jì)模式單例模式的七種示例

    java編程創(chuàng)建型設(shè)計(jì)模式單例模式的七種示例

    這篇文章主要為大家介紹了java編程中創(chuàng)建型設(shè)計(jì)模式之單例模式的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 深入理解Java設(shè)計(jì)模式之外觀模式

    深入理解Java設(shè)計(jì)模式之外觀模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之外觀模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • Java實(shí)現(xiàn)簡(jiǎn)易生產(chǎn)者消費(fèi)者模型過程解析

    Java實(shí)現(xiàn)簡(jiǎn)易生產(chǎn)者消費(fèi)者模型過程解析

    這篇文章主要介紹了Java實(shí)現(xiàn)簡(jiǎn)易生產(chǎn)者消費(fèi)者模型過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 如何在Java中獲取當(dāng)前年份(實(shí)例代碼)

    如何在Java中獲取當(dāng)前年份(實(shí)例代碼)

    在Java語言中獲取當(dāng)前年份有幾種方法:使用java.util包下的Calendar類,使用java.time包下的LocalDate類或者使用java.text包下的SimpleDateFormat類,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-11-11
  • Java如何使用Set接口存儲(chǔ)沒有重復(fù)元素的數(shù)組

    Java如何使用Set接口存儲(chǔ)沒有重復(fù)元素的數(shù)組

    Set是一個(gè)繼承于Collection的接口,即Set也是集合中的一種。Set是沒有重復(fù)元素的集合,本篇我們就用它存儲(chǔ)一個(gè)沒有重復(fù)元素的數(shù)組
    2022-04-04

最新評(píng)論

台江县| 武平县| 灌南县| 鄂伦春自治旗| 青岛市| 崇州市| 盐边县| 东乡县| 鹤壁市| 永吉县| 昌吉市| 当雄县| 新丰县| 井陉县| 元阳县| 仁怀市| 新竹市| 昌宁县| 青铜峡市| 西林县| 泌阳县| 普陀区| 漾濞| 新蔡县| 重庆市| 汝州市| 西青区| 清丰县| 陵水| 兰考县| 阳江市| 双柏县| 霍城县| 巫溪县| 册亨县| 织金县| 五大连池市| 蚌埠市| 灌阳县| 兰西县| 赫章县|