Java 求教

提示: 作者被禁止或刪除 內容自動屏蔽

http://www.bing.com/search?q=jav ... mp;src=IE-SearchBox

唔想重覆的話, 可以載住Generate咗的Numbers, 有新Number generate嗰陣再對比下, 如果已經出現過就再Generate過.

[ 本帖最後由 GraphiteCube 於 2009-8-27 14:15 編輯 ]

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

回覆 3# 的帖子

Set nonRepeatSet = new HashSet();
int total = 100;
while(nonRepeatSet.size() < total){
nonRepeatSet.add(Math.random());
}
//manipulate ur nonRepeatSet result

TOP

原帖由 GraphiteCube 於 2009-8-27 14:14 發表
http://www.bing.com/search?q=jav ... mp;src=IE-SearchBox

唔想重覆的話, 可以載住Generate咗的Numbers, 有新Number generate嗰陣再對比下, 如果已經出現過就再Generate過.

  點解唔直接DEL/REPLACE左個已經出現左既數字呢??

TOP

import java.util.ArrayList;

public class RandomNumber {

        public static void main(String[] args) {

                int randomNumber = 0;
                ArrayList<Integer> arrayList = new ArrayList<Integer>();
                boolean first = true;

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

                        do {
                                randomNumber = (int) (Math.random() * 6) + 1;

                                if (first) {
                                        arrayList.add(randomNumber);
                                        first = false;
                                }

                        } while (arrayList.contains(randomNumber));

                        arrayList.add(randomNumber);

                        System.out.println(randomNumber);
                }
        }

}

this program  from 1 to 6 randomly  3 number

[ 本帖最後由 xeon0541 於 2009-8-27 17:19 編輯 ]

TOP

一般最直觀就是用O(n)既方法

如果需要很大量的話
也可以用binary tree做到O(logN)的方法

如果random數字係within不大的range
例如只要1-100,那做一個size為100的array就可以
只要O(1),唯需要的space較多(但固定)

TOP

do{
...
} while (arrayList.contains(randomNumber));

?
點解唔先諗下點樣去解決重複既問題呢?
如果4個裡面搵三個咁結果會點呢?... 咪要LOOP好多次?

TOP

呢條簡單題目, 已經可以知道家下D Programmer係點樣諗野既, 幾好!

TOP

Generate one sequential array and then shuffle it randomly.  Done.

The question is how to shuffle it in a "sufficiently random" manner.

(And, as Patrick mentioned, I am sad to see none of the suggestions above try to prevent infinite loops.)

TOP