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

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

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

java提供了Math.random()函數(shù),返回一個(gè)double類(lèi)型的隨機(jī)數(shù),也有util包里的Random類(lèi),可以生成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ī)字符串(只包含大小寫(xiě)字母、數(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ī)字符串(只包含大小寫(xiě)字母、數(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ī)純字母字符串(只包含大小寫(xiě)字母) 
   * 
   * @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ī)純大寫(xiě)字母字符串(只包含大小寫(xiě)字母) 
   * 
   * @param length 
   *      隨機(jī)字符串長(zhǎng)度 
   * @return 隨機(jī)字符串 
   */
  public static String generateLowerString(int length) {
    return generateMixString(length).toLowerCase();
  }

  /** 
   * 返回一個(gè)定長(zhǎng)的隨機(jī)純小寫(xiě)字母字符串(只包含大小寫(xiě)字母) 
   * 
   * @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ī)字符串(只包含大小寫(xiě)字母、數(shù)字):" + generateStringByKey(32, channel));
    System.out.println("返回一個(gè)定長(zhǎng)的隨機(jī)字符串(只包含大小寫(xiě)字母、數(shù)字):" + generateString(32));
    System.out.println("返回一個(gè)定長(zhǎng)的隨機(jī)純字母字符串(只包含大小寫(xiě)字母):" + generateMixString(10));
    System.out.println("返回一個(gè)定長(zhǎng)的隨機(jī)純大寫(xiě)字母字符串(只包含大小寫(xiě)字母):" + generateLowerString(10));
    System.out.println("返回一個(gè)定長(zhǎng)的隨機(jī)純小寫(xiě)字母字符串(只包含大小寫(xiě)字母):" + 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)類(lèi)快捷生成接口方法示例

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

    這篇文章主要介紹了idea實(shí)現(xiàn)類(lèi)快捷生成接口方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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)配置原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-10-10
  • RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫(xiě)分離

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

    這篇文章主要介紹了RocketMQ設(shè)計(jì)之主從復(fù)制和讀寫(xiě)分離,RocketMQ提高消費(fèi)避免Broker發(fā)生單點(diǎn)故障引起B(yǎng)roker上的消息無(wú)法及時(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)者模型過(guò)程解析

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

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

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

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

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

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

最新評(píng)論

桑日县| 谢通门县| 宁化县| 抚松县| 乐山市| 万山特区| 公安县| 旌德县| 旅游| 亳州市| 安西县| 三台县| 莱阳市| 百色市| 盐池县| 合阳县| 台中县| 伊金霍洛旗| 开原市| 隆德县| 徐汇区| 武邑县| 丰顺县| 宝丰县| 项城市| 东莞市| 阳山县| 昭平县| 化德县| 昌江| 保靖县| 玉田县| 金沙县| 耒阳市| 云梦县| 泽库县| 富川| 寿宁县| 民丰县| 鄂尔多斯市| 洪泽县|