知识大全 生成8位随机不重复的数字编号

Posted 数字

篇首语:虽然狠努力,练习着忘记,我的心却还没答应可以放弃了沵。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 生成8位随机不重复的数字编号相关的知识,希望对你有一定的参考价值。

  生成 位随机不重复的数字编号

  package mon util;

  import java util Arrays;

  import java util Random;

  /**

  *

  */

  public class RandomNumberGenerator

  /**

  * 这是典型的随机洗牌算法

  * 流程是从备选数组中选择一个放入目标数组中 将选取的数组从备选数组移除(放至最后 并缩小选择区域)

  * 算法时间复杂度O(n)

  * @return 随机 为不重复数组

  */

  public static String generateNumber()

  String no= ;

  //初始化备选数组

  int[] defaultNums = new int[ ];

  for (int i = ; i < defaultNums length; i++)

  defaultNums[i] = i;

  

  Random random = new Random()

  int[] nums = new int[LENGTH];

  //默认数组中可以选择的部分长度

  int canBeUsed = ;

  //填充目标数组

  for (int i = ; i < nums length; i++)

  //将随机选取的数字存入目标数组

  int index = random nextInt(canBeUsed)

  nums[i] = defaultNums[index];

  //将已用过的数字扔到备选数组最后 并减小可选区域

  swap(index canBeUsed defaultNums)

  canBeUsed ;

  

  if (nums length> )

  for (int i = ; i < nums length; 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 (num length> )

  for (int i = ; i < num length; i++)

  no+=num[i];

  

  

  return no;

  

  public static void main(String[] args)

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

  //            System out println(generateNumber())

  System out println(generateNumber ())

  

  

cha138/Article/program/Java/hx/201311/26871

相关参考