討論區快速選單
知識庫快速選單
網路投保旅行平安險 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
[JAVA陣列+亂數]不重覆出現數字
更改我的閱讀文章字型大小
作者 : redeyesofdragon(THE.丸子)
[ 貼文 66 | 人氣 7349 | 評價 30 | 評價/貼文 0.45 | 送出評價 18 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/7/5 下午 09:58:36
用了一個笨方法
效率不太好的
能有更好的方式嗎



import java.util.Random;

public class Test
{
public static void main(String args[])
{
Random random = new Random();

int number = 0;;
int array[] = new int[6];
boolean b;

for(int i=0;i<6;i++)
{
b = true;
while(b) {
b = false;
number = random.nextInt(6)+1;
for(int j=0;j<array.length;j++) {
if(array[j]==number) {
b = true;
}
}
}
array[i] = number;
System.out.printf("array[%d]=%d\n",i,number);
}
}

}
作者 : dank8435(Daniel)討論區板主 資訊類作業求救優秀好手貼文超過200則
[ 貼文 415 | 人氣 7059 | 評價 2010 | 評價/貼文 4.84 | 送出評價 11 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人redeyesofdragon註記此篇回應為很有道理 2005/7/5 下午 10:40:49
或許可以取第一個數之後, 後面的每一個數都以前一個數加上某個亂數值,
這樣就不會重複了, 而且一定會以遞增順序排列!
個人愚見, 參考看看!
作者 : zombiechuang(殭屍)
[ 貼文 76 | 人氣 5 | 評價 450 | 評價/貼文 5.92 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人redeyesofdragon註記此篇回應為最佳解答 2005/7/6 下午 03:54:45

>用了一個笨方法
>效率不太好的
>能有更好的方式嗎
>
>
>
>import java.util.Random;
>
>public class Test
>{
>public static void main(String args[])
>{
>Random random = new Random();
>
>int number = 0;;
>int array[] = new int[6];
>boolean b;
>
>for(int i=0;i<6;i++)
>{
>b = true;
>while(b) {
>b = false;
>number = random.nextInt(6)+1;
>for(int j=0;j<array.length;j++) {
>if(array[j]==number) {
>b = true;
>}
>}
>}
>array[i] = number;
>System.out.printf('array[%d]=%d
',i,number);
>}
>}
>
>}


用洗牌法就好了
public static void main(String[] args){
    Random random = new Random();
    int result[] = new int[]{1,2,3,4,5,6};
   for(int i=0; i < result.length; i ++){ // 這個迴圈也可以只跑到result.length/2
     int index = random.nextInt(6);
     //交換 i 跟index的原素
     int tmp = result[index];
     result[index] = result[i];
     result[i] = tmp;
   }

   //印出結果
   for(int i=0; i < result.length; i ++)
     System.out.println("result["+(i+1)+"]=" + result[i]);
}
 板主 : 風月
 > Java入門一般區 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Java入門一般區 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Java入門一般區
1 洋將 2410 
2 Aron 2130 
3 Aries 1510 
4 DEMO999 1310 
5 Ben 990 
6 ramb 620 
7 ozzy 570 
8 tand 460 
9 Huah 410 
10 vindy 400 
Java入門一般區
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125