熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

生成8位隨機不重復的數字編號

2013-11-23 19:26:14  來源: Java核心技術 

  生成位隨機不重復的數字編號

  package monutil;

  import javautilArrays;

  import javautilRandom;

  /**

  *

  */

  public class RandomNumberGenerator {

  /**

  * 這是典型的隨機洗牌算法

  * 流程是從備選數組中選擇一個放入目標數組中將選取的數組從備選數組移除(放至最後並縮小選擇區域)

  * 算法時間復雜度O(n)

  * @return 隨機為不重復數組

  */

  public static String generateNumber() {

  String no=;

  //初始化備選數組

  int[] defaultNums = new int[];

  for (int i = ; i < defaultNumslength; i++) {

  defaultNums[i] = i;

  }

  Random random = new Random()

  int[] nums = new int[LENGTH];

  //默認數組中可以選擇的部分長度

  int canBeUsed = ;

  //填充目標數組

  for (int i = ; i < numslength; i++) {

  //將隨機選取的數字存入目標數組

  int index = randomnextInt(canBeUsed)

  nums[i] = defaultNums[index];

  //將已用過的數字扔到備選數組最後並減小可選區域

  swap(index canBeUsed defaultNums)

  canBeUsed;

  }

  if (numslength>) {

  for (int i = ; i < numslength; i++) {

  no+=nums[i];

  }

  }

  return no;

  }

  private static final int LENGTH = ;

  private static void swap(int i int j int[] nums) {

  int temp = nums[i];

  nums[i] = nums[j];

  nums[j] = temp;

  }

  public static String generateNumber() {

  String no=;

  int num[]=new int[];

  int c=;

  for (int i = ; i < ; i++) {

  num[i] = new Random()nextInt(

  c = num[i];

  for (int j = ; j < i; j++) {

  if (num[j] == c) {

  i;

  break;

  }

  }

  }

  if (numlength>) {

  for (int i = ; i < numlength; i++) {

  no+=num[i];

  }

  }

  return no;

  }

  public static void main(String[] args) {

  for (int i = ; i < ; i++) {

  //            Systemoutprintln(generateNumber())

  Systemoutprintln(generateNumber())

  }

  }

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26871.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.