如果我有一个这样的enum:
public enum Letter {
A,
B,
C,
//...
}
随机挑选一个的最佳方法是什么?它不需要是生产质量的防弹,但一个相当均匀的分布会很好。
我可以这样做
private Letter randomLetter() {
int pick = new Random().nextInt(Letter.values().length);
return Letter.values()[pick];
}
但是有没有更好的办法呢?我觉得这个问题之前已经解决了。
如果你这样做是为了测试,你可以使用Quickcheck(这是我一直在做的一个Java端口)。
import static net.java.quickcheck.generator.PrimitiveGeneratorSamples.*;
TimeUnit anyEnumValue = anyEnumValue(TimeUnit.class); //one value
它支持所有的基本类型,类型组合,集合,不同的分布函数,边界等。它支持运行器执行多个值:
import static net.java.quickcheck.generator.PrimitiveGeneratorsIterables.*;
for(TimeUnit timeUnit : someEnumValues(TimeUnit.class)){
//..test multiple values
}
Quickcheck的优点是,您可以根据规范定义测试,其中普通TDD与场景一起工作。
如果你这样做是为了测试,你可以使用Quickcheck(这是我一直在做的一个Java端口)。
import static net.java.quickcheck.generator.PrimitiveGeneratorSamples.*;
TimeUnit anyEnumValue = anyEnumValue(TimeUnit.class); //one value
它支持所有的基本类型,类型组合,集合,不同的分布函数,边界等。它支持运行器执行多个值:
import static net.java.quickcheck.generator.PrimitiveGeneratorsIterables.*;
for(TimeUnit timeUnit : someEnumValues(TimeUnit.class)){
//..test multiple values
}
Quickcheck的优点是,您可以根据规范定义测试,其中普通TDD与场景一起工作。