KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > clif > scenario > util > timers > GaussianRandomTimer


1 /*
2 * CLIF is a Load Injection Framework
3 * Copyright (C) 2003 France Telecom R&D
4 * Copyright (C) 2003 INRIA
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 *
20 * CLIF $Name: $
21 *
22 * Contact: clif@objectweb.org
23 *
24 * @authors: Julien Buret
25 * @authors: Nicolas Droze
26 */

27
28 package org.objectweb.clif.scenario.util.timers;
29
30 import java.util.Random JavaDoc;
31
32 /**
33  * This class represents a random timer with a gaussian distribution.
34  */

35 public class GaussianRandomTimer extends RandomTimer {
36
37     private long rand;
38     private int mean;
39     private int deviation;
40     private Random JavaDoc random = new Random JavaDoc();
41
42     /**
43      * The empty constructor.
44      */

45     public GaussianRandomTimer() {
46     }
47
48     /**
49      * The constructor with specific values.
50      * @param min The lower bound.
51      * @param max The upper bound.
52      * @param mean The mean.
53      * @param deviation The deviation.
54      */

55     public GaussianRandomTimer(int min, int max, int mean, int deviation) {
56         setMin(min);
57         setMax(max);
58         this.mean = mean;
59         this.deviation = deviation;
60     }
61
62     /**
63      * This method calculate a random delay between the range of the timer.
64      * @return The random delay calculated with an gaussian distribution.
65      */

66     public long getDelay() {
67
68         rand = 0;
69         while ((rand == 0) || (rand > getRange()))
70             rand = (long) Math.abs(random.nextGaussian() * deviation + mean);
71         return rand;
72     }
73
74     /**
75      * This is the useful method to write a scenario.
76      * Calling this method will pause the thread of a random delay.
77      */

78     public void delay() {
79         try {
80             Thread.sleep(getDelay());
81         } catch (InterruptedException JavaDoc e) {
82             e.printStackTrace();
83         }
84     }
85
86 }
87
Popular Tags