是否可以在Mersenne Twister RNG(Java)中指定Nextint的上限和下限



i有必要在Java/kotlin中使用Mersenne Twister算法生成随机数(用于Android(。我已经尝试使用Apache Commons-Math Mersenne Twister实现,该实现非常适合生成随机整数。但是,我需要为这些指定相当小的范围,INT必须在1到100之间。

似乎不可能使用Apache实现指定上限和下限。有人知道Java/Kotlin是否有其他替代的Mersenne Twister选项,可以接受下一个生成的界限?

afaik您可以将生成的int的上边界传递给Nextint方法,因此可以像这样编写简单的扩展功能:

fun MersenneTwister.nextInt(min: Int, max: Int) = min + nextInt(max - min)

请注意,像MT的Nextint结果一样,不包括上边界,因此,如果需要此行为,您可能需要在NextInt的参数中添加1个。

还请注意,我没有很好地测试此功能,所以请在使用之前自己做。

最新更新