30選7機選實現

yuan22003發表於2011-08-27

寫一個函式,從1到30中隨機選出7個不同的數字輸出(30選7機選),請寫出程式碼或給出詳細思路,不限程式語言。

方法一:用陣列實現

import java.util.Arrays;

public class Select7from30 {
	
	int[] a = new int[31];//用來裝30個數,第0個數不用
	boolean[] b = new boolean[31]; //用來表示這30個數使用情況,如果用過則不能再用
	int[] result;
	private void initInt(int[] a) {
		for(int i=1;i<a.length;i++){
			a[i]=i;
		}
	}
	private void initBoolean(boolean[] b){
		for(int i=1;i<b.length;i++) {
			b[i]= false;
		}
	}
	private int[] get(int[] a,boolean[] b){
		int[] result = new int[7];
		for(int i=0;i<7;i++){
			int random = (int)(Math.random()*30);
			while((b[random]==true)||(random==0)) random = (int)(Math.random()*30);
			b[random] = true;
			result[i] = a[random];
		}
		return result;
	}
	
	public static void main(String[] args) {
		Select7from30 sf = new Select7from30();
		sf.initInt(sf.a);
		System.out.println(Arrays.toString(sf.a));
		sf.initBoolean(sf.b);
		sf.result=sf.get(sf.a, sf.b);
		System.out.println(Arrays.toString(sf.result));
		Arrays.sort(sf.result);//排序
		System.out.println(Arrays.toString(sf.result));
	}
}

方法二、用集合實現

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Select7from30 {
	
	public static void main(String[] args) {
		List<Integer> ls = new ArrayList<Integer>(30);
		for(int i=1;i<=30;i++) {
			ls.add(i);
		}
		List<Integer> result = new ArrayList<Integer>(7);
		for(int i=1;i<=7;i++) {
			result.add(ls.remove((int)(Math.random()*(ls.size()-1))));
		}
		for(Integer i : result) {
			System.out.print(i+",");
		}
		System.out.println();
		Collections.sort(result);
		for(Integer i : result) {
			System.out.print(i+",");
		}
	}
}


相關文章