10個數字隨機分在10個位置上,這樣的隨機演算法怎麼寫。
我的想法:產生一個隨機數,然後10個位置10取模+隨機數,但是感覺不夠隨機,有什麼好的演算法沒!
例如:
1 2 3 4 5 6 7 8 9 10
2 1 4 3 9 7 8 6 5 10
。 。 。
(隨機排列)
補充:
提供一個方法:
10個數的線性表,random(10)=5,刪除節點5
9個數的線性表,random(9)=2,刪除節點2
。 。 。 。
最後隨機序列 5,2。 。 。 。 。
感覺這樣挺隨機的。
10個數字隨機分在10個位置上,這樣的隨機演算法怎麼寫。
我的想法:產生一個隨機數,然後10個位置10取模+隨機數,但是感覺不夠隨機,有什麼好的演算法沒!
例如:
1 2 3 4 5 6 7 8 9 10
2 1 4 3 9 7 8 6 5 10
。 。 。
(隨機排列)
補充:
提供一個方法:
10個數的線性表,random(10)=5,刪除節點5
9個數的線性表,random(9)=2,刪除節點2
。 。 。 。
最後隨機序列 5,2。 。 。 。 。
感覺這樣挺隨機的。
偽代碼:
<code>生成长度为10的数组a,压入1~10(或其他你想要的数) for (i = a.length - 1; i > 0; i--) { 生成一个0~i的随机数j(0 <= j < i) 交换a[i]和a[j] }</code>
計算機沒有辦法產生一個真正的隨機數... 只能盡量讓產生的數分佈均勻在各個區間..
不是隨機演算法的問題,是樣本太小,你隨機100個數字試試,看起來就很隨機了
隨機出來1、3、2、4、5、6、7、8、10、9,你還是覺得不夠隨機
你是想把1-10十個數散列到十個位置吧。哈希就可以了吧。