首頁  >  文章  >  後端開發  >  10個數字隨機分佈演算法

10個數字隨機分佈演算法

WBOY
WBOY原創
2016-09-21 14:13:132236瀏覽

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十個數散列到十個位置吧。哈希就可以了吧。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn