2

プロセスモデリングのコンテキストでグラフデータベースのパフォーマンスレビューを行っています。したがって、組み込み 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 は、作成された特定のオブジェクト ( model または language ) を返します。私が現在直面している問題は、モデルへの言語のランダムな割り当てが機能していないことです。スクリプトは、各モデルを 1 つの言語オブジェクトに割り当てます。私の考えでは、モデルに言語をランダムに割り当てる必要があります。

4

2 に答える 2

2

問題はランダムな割り当てにはありません。

int fin = (int) Math.round(Math.random()*9);

Math.random()double範囲内の a を返します: [0,1)、9 を掛けると: [0,9)、丸めると が得られ[0,9]ます。CPerkins指摘したように、使用Randomはより単純に見え、おそらくより優れています (0 から 9 までの数字を生成する確率はメソッドで均一ではないため) が、乱数の生成範囲は正しいです。問題は、あなたが示したコードにはありません。おそらくそれはaddModel()またはにありsave()ます。

于 2013-07-11T12:03:14.513 に答える
1

これはあなたの問題ではありませんが問題です: Math.random は 0 と 1 の間の double を返します。これに 9 を掛けて丸めても、公平な分布は得られません (0 と 9 は半分の頻度でしか表示されません)。したい)。変化する:

int fin = (int) Math.round(Math.random()*9);

もっと似たものに

Random randomGenerator = new Random();
...
int fin = randomGenerator.nextInt(10);
于 2013-07-11T11:50:55.000 に答える