舒爾特表的生成算法

        舒爾特表是一種訓練人的注意力的表格,一般是方格,從3階到6階比較常用,每一個小格內顯示一個亂序列排列且不重複的數字,比如3階舒爾特表每一排的數字可能是4,2,5;8,6,7;3,9,1。這種表格的使用方式爲從1一直點到最大的數值,然後記錄用時,用時越快表示注意力越集中。

        生成舒爾特表的過程也就是將一組數字隨機打亂的過程,然後依次填充到每個小格里去,我們可以封裝一個函數,用於生成從最小值min到最大值max之間的一個隨機數。暫取名爲GetRandom(min, max),假定要生成3階表,生成過程如下:

        構造9個容器,這9個容器分別裝着1-9這些數字。首先,從1-9隨機生成一個數,填到第一個格里,比如是3,於是就從第3個容器中取出3來,現在第3個容器空了,就把3後面的容器中的數依次向前挪,最後第9個容器空了,我們要從剩下的8個數中隨機取出一個,於是調用GetRandom(1,8), 比如又是3,那麼從第3個容器中再取出數來,現在這個數是4,填充到第二個格。然後再把第4個容器到第8個容器中的數再往前挪一次。然後再調用GetRandom(1,7).以此類推。最後必然生成的是打亂的數字序列。

        這個算法時間主要消耗在移動容器中的數字上,對於生成100以內的亂序隨機數,這足夠用了,而且還比較好理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章