我正在对过程建模上下文中的图形数据库进行性能审查。因此,我设置了一个简单的测试用例,用于跟踪对嵌入式N4J数据库执行简单插入的性能。这是我测试用例的摘录。
@Test
public void insertQuants(){
int size =750;
/**
* create 10 different languages and store them in the ArrayList
*/
ArrayList<Language> lngs = new ArrayList<Language>();
for(int i=0; i<10; i++){
String title = "Testsprache " + String.valueOf(i);
String description = "Beschreibung " +String.valueOf(i);
lngs.add(modelservice.createLanguage(title,description));
}
/**
* Create different models and assign them to different
* language objects
*/
for(int i=0; i<size; i++){
String title = "Testmodel " + String.valueOf(i);
//get random between 0 and 9
int fin = (int) Math.round(Math.random()*9);
//fetch random Language object out of ArrayList
Language l = lngs.get(fin);
Model m = modelservice.createModel(l, title);
l.addModel(m);
template.save(l);
}modelservice中的createModel方法返回特定创建的对象(模型或语言)。我目前面临的问题是,随机地将语言分配给模型是不起作用的。该脚本将每个模型分配给一个语言对象。在我看来,它应该随机地将语言分配给模型。
发布于 2013-07-11 20:03:15
问题不在于随机分配:
int fin = (int) Math.round(Math.random()*9);Math.random()返回一个范围:double:[0,1),乘以9得到:[0,9),四舍五入得到[0,9]。正如CPerkins指出的,使用Random可能看起来更简单,也可能更好(因为生成数字0到9的概率与您的方法不一致),但您的随机数生成范围是正确的。问题不在您向我们展示的代码中。可能是在addModel()或save()中。
发布于 2013-07-11 19:50:55
这不是你的问题,但它是一个问题: Math.random返回一个介于0和1之间的双精度数。乘以9并进行四舍五入不会得到公平的分布(0和9出现的频率只有你想要的一半)。更改:
int fin = (int) Math.round(Math.random()*9);更像是
Random randomGenerator = new Random();
...
int fin = randomGenerator.nextInt(10);https://stackoverflow.com/questions/17592165
复制相似问题