程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 生成8位隨機不反復的數字編號的辦法

生成8位隨機不反復的數字編號的辦法

編輯:關於JAVA

生成8位隨機不反復的數字編號的辦法。本站提示廣大學習愛好者:(生成8位隨機不反復的數字編號的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是生成8位隨機不反復的數字編號的辦法正文



package com.jjinfo.common.util;
import java.util.Arrays;
import java.util.Random;

/**
*
*/
public class RandomNumberGenerator {

/**
* 這是典范的隨機洗牌算法。
* 流程是從備選數組當選擇一個放入目的數組中,將拔取的數組從備選數組移除(放至最初,並減少選擇區域)
* 算法時光龐雜度O(n)
* @return 隨機8為不反復數組
*/
public static String generateNumber() {
String no="";
//初始化備選數組
int[] defaultNums = new int[10];
for (int i = 0; i < defaultNums.length; i++) {
defaultNums[i] = i;
}

Random random = new Random();
int[] nums = new int[LENGTH];
//默許數組中可以選擇的部門長度
int canBeUsed = 10;
//填充目的數組
for (int i = 0; i < nums.length; i++) {
//將隨機拔取的數字存入目的數組
int index = random.nextInt(canBeUsed);
nums[i] = defaultNums[index];
//將已用過的數字扔到備選數組最初,並減小可選區域
swap(index, canBeUsed - 1, defaultNums);
canBeUsed--;
}
if (nums.length>0) {
for (int i = 0; i < nums.length; i++) {
no+=nums[i];
}
}

return no;
}
private static final int LENGTH = 8;

private static void swap(int i, int j, int[] nums) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}

public static String generateNumber2() {
String no="";
int num[]=new int[8];
int c=0;
for (int i = 0; i < 8; i++) {
num[i] = new Random().nextInt(10);
c = num[i];
for (int j = 0; j < i; j++) {
if (num[j] == c) {
i--;
break;
}
}
}
if (num.length>0) {
for (int i = 0; i < num.length; i++) {
no+=num[i];
}
}
return no;
}

public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
// System.out.println(generateNumber());
System.out.println(generateNumber2());
}
}
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved