我在流程建模的上下文中对图形数据库进行性能评估。 因此,我设置了一个简单的测试用例,用于跟踪嵌入式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返回特定的创建对象(模型或语言)。 我目前面临的问题是随机分配语言到模型是行不通的。脚本将每个模型分配给一个语言对象。在我看来,它应该随机地将语言分配给模型。
答案 0 :(得分:1)
这不是你的问题,但它是一个问题:Math.random返回0到1之间的双精度。将它乘以9和舍入不会给你一个公平的分布(零和九只会出现你想要的一半。变化:
int fin = (int) Math.round(Math.random()*9);
更像是
Random randomGenerator = new Random();
...
int fin = randomGenerator.nextInt(10);
答案 1 :(得分:1)
问题不在于随机分配:
int fin = (int) Math.round(Math.random()*9);
Math.random()
在范围内返回double
:[0,1)
,乘以9得到:[0,9)
,舍入得[0,9]
。正如 CPerkins 指出的那样,使用Random
可能看起来更简单并且可能更好(因为生成数字0到9的概率与您的方法不一致),但您的随机数生成范围是正确。问题不在于您向我们展示的代码中。也许它在addModel()
或save()
。