我的需求是有一個1-1000的序列,然后我抽取一個4位亂數,通過該亂數能使該序列重新排序,并且得到一個新的1-1000的序列.
我之前寫了一個演算法 序列中任意一個數 266,然后抽取亂數3709, 我使用 (266*3709)%1000+1=2595,但如果兩個數都是質數的話,那結果很完美,正好沒有重復,但如果兩個數有公約數,那就會出現大量重復
請問通過什么演算法能得到一個絕不重復的新序列,最好能對原始資料勁量均勻分配!
謝謝各路大神了!!!!!!!!!!!

uj5u.com熱心網友回復:
自己頂自己一下uj5u.com熱心網友回復:
你在說什么?
抽取得4位亂數是用來生成新的序列的?生成的規則?
uj5u.com熱心網友回復:
為何不用 jdk 自帶的隨機排序演算法呢? Collections.shuffle(list);有興趣也可以看看這篇文章哦
http://chronicles.blog.ryanrampersad.com/2012/03/more-on-shuffling-an-array-correctly/
uj5u.com熱心網友回復:
要提現透明的原則,只有機械搖號才認可uj5u.com熱心網友回復:
你想達到什么目的?看了你的問題描述,沒看出個所以然。如果是把原來的序列打亂順序重新排列,那么可以用3L所說的Collections.shuffle(list),或者隨機交換兩個位置的元素
比如
int a[] = {1,2,3,4,5,6,7,8,9,0};
System.out.println(Arrays.toString(a)); //重新排序前
Random r = new Random();
for (int i=0; i<a.length; i++) {
int j = r.nextInt(a.length); //隨機取個位置
int tmp = a[i]; //交換該隨機位置和i位置的元素
a[i] = a[j];
a[j] = tmp;
}
System.out.println(Arrays.toString(a)); //重新排序后
uj5u.com熱心網友回復:
去重?把亂數加到Set上,加到set.size() == 你想要的個數。或者1-1000的序列存到list上,從這個list上通過remove()來取,保證不重復
uj5u.com熱心網友回復:
可以只隨機抽取質數帶入原有的演算法不就可以了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29470.html
標籤:Web 開發
上一篇:微信客服介面
下一篇:請教大家一些關于微服務的問題
