Home > Vim Hacks > Hack #98: VimScriptで疑似乱数を生成する

Hack #98: VimScriptで疑似乱数を生成する

VimScriptには、残念ながら疑似乱数を生成するための関数が存在しません。しかし工夫すれば、VimScriptでも乱数生成をすることができます。活用シーンはさほど多くありませんが、ちょっとした裏技として知っておくと良いでしょう。

乱数の生成方法

乱数を生成するためには、次のようなVimScriptを用います。

let l:match_end = matchend(reltimestr(reltime()), '\d\+\.') + 1
let l:rand = reltimestr(reltime())[l:match_end : ] % (n + 1)

reltimestr(reltime())の部分で、3939190.694889のようにVimが起動してからの時間をマイクロ秒単位で取得します。 このうち、0.1秒未満の部分を乱数用に使用するため、reltimestr(reltime())[l:match_end : ]でマッチ部分を取り出しています。 あとはn+1で剰余を取ることで、0~nまでの簡単な乱数が生成されます。実用上はこの程度の精度で充分でしょう。

使用上の注意

reltimestr()reltime()はVimが+reltimeでコンパイルされていないと動作しません。 大抵の環境では動作するはずですが、使用する場合には念のため、has('reltime')で検査しておくことをお薦めします。

Shougo

Comments:0

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://vim-users.jp/2009/11/hack98/trackback/
Listed below are links to weblogs that reference
Hack #98: VimScriptで疑似乱数を生成する from Vim-users.jp
trackback from Big Sky 09-11-05 (木) 1:15

Big Sky :: Re: Hack #98: VimScriptで疑似乱数を生成する

できなくはない…かな。

Home > Vim Hacks > Hack #98: VimScriptで疑似乱数を生成する

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • プラグイン
  • vimrc
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top