view src/main/java/fj/Rng.java @ 0:fe80c1edf1be

add getLoop
author tatsuki
date Fri, 20 Mar 2015 21:04:03 +0900
parents
children
line wrap: on
line source

package fj;

/**
 * Created by MarkPerry on 7/07/2014.
 */
public abstract class Rng {

	public abstract P2<Rng, Integer> nextInt();

    public abstract P2<Rng, Long> nextLong();

    // [low, high] inclusive
    public P2<Rng, Integer> range(int low, int high) {
        return nextNatural().map2(x -> (x % (high - low + 1)) + low);
    }


	public P2<Rng, Integer> nextNatural() {
		return nextInt().map2(x -> x < 0 ? -(x + 1) : x);
	}


}