No Programming, No Life

プログラミング関連の話題や雑記

Groovyで範囲内乱数

ちょっと1.6から追加されたdefineを使って範囲内乱数を実現するメソッドを追加してみた。

IntRange.metaClass.define {
    // 範囲内でランダム
    random {
        int from = delegate.isReverse() ? to : from
        int to   = delegate.isReverse() ? from : to
        int size = to - from + 1
        (Math.floor(Math.random() * size) + from) as int
    }
}

// 検証
1000.times{
    assert (0..4).random() in (0..4), '0〜4の値がランダムに返ってくるはずですよ'
}

動作確認: Groovy Version: 1.6.1 JVM: 1.6.0_13


簡潔にかけて素敵ですね。