Vim script でリストをシャッフルする
簡単に書いてみた。
乱数生成は vital.vim で。
[ソース]
let s:random = vital#of("vital").import("Random.Xor128") call s:random.srand(localtime()) function! s:rand() return s:random.rand() endfunction function! s:shuffle(list) let list = a:list let i = len(list) while i let i -= 1 let j = s:rand() * i % len(list) if i == j continue endif let k = list[i] let list[i] = list[j] let list[j] = k endwhile return list endfunction function! s:main() echo s:shuffle(range(10)) echo s:shuffle(range(10)) echo s:shuffle(range(10)) echo s:shuffle(range(10)) echo s:shuffle(range(10)) endfunction call s:main()