0
我試圖用Java創建Random類是不重複的輸出,並在這裏的一個子類隨機數發生器就是我這麼遠..非重複在Java中
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
public class NonRepetitiveRandom extends java.util.Random {
private Set<Integer> noUseInts = new CopyOnWriteArraySet<Integer>();
private static final long serialVersionUID = 1L;
@Override
protected int next(int bits) {
int i;
for (i = super.next(bits); noUseInts.contains(i); i = super.next(bits))
;
noUseInts.add(i);
return i;
}
}
它很好嗎?我需要添加任何東西嗎?我最初嘗試使用與上面相同的模型重寫每個next *方法,但是在注意到下一個方法本身用於所有next *方法後,我試圖單獨覆蓋它。
注意:洗牌方法將不起作用,因爲它會創建一個整個列表並在每次需要值時洗牌。而且,如果範圍很寬並且根本沒有指定範圍,那麼這將是不實際的。實際上,這種方法的唯一用例是當我已經有一個列表。作爲一個結論,一個非重複的隨機數發生器將是最實際的解決方案。
它以什麼方式很好?這是一個瘋狂的要求。 –
@MK,很好,它會生成非重複的數字。 –
它逐漸變得隨機。 –