首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中生成随机对象

在Java中生成随机对象
EN

Stack Overflow用户
提问于 2013-07-11 19:27:17
回答 2查看 9.5K关注 0票数 2

我正在对过程建模上下文中的图形数据库进行性能审查。因此,我设置了一个简单的测试用例,用于跟踪对嵌入式N4J数据库执行简单插入的性能。这是我测试用例的摘录。

代码语言:javascript
复制
@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方法返回特定创建的对象(模型或语言)。我目前面临的问题是,随机地将语言分配给模型是不起作用的。该脚本将每个模型分配给一个语言对象。在我看来,它应该随机地将语言分配给模型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 20:03:15

问题不在于随机分配:

代码语言:javascript
复制
int fin = (int) Math.round(Math.random()*9);

Math.random()返回一个范围:double[0,1),乘以9得到:[0,9),四舍五入得到[0,9]。正如CPerkins指出的,使用Random可能看起来更简单,也可能更好(因为生成数字0到9的概率与您的方法不一致),但您的随机数生成范围是正确的。问题不在您向我们展示的代码中。可能是在addModel()save()中。

票数 2
EN

Stack Overflow用户

发布于 2013-07-11 19:50:55

这不是你的问题,但它是一个问题: Math.random返回一个介于0和1之间的双精度数。乘以9并进行四舍五入不会得到公平的分布(0和9出现的频率只有你想要的一半)。更改:

代码语言:javascript
复制
int fin = (int) Math.round(Math.random()*9);

更像是

代码语言:javascript
复制
Random randomGenerator = new Random();
...
int fin = randomGenerator.nextInt(10);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17592165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档