1   /**
2    * Logback: the reliable, generic, fast and flexible logging framework.
3    * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
4    *
5    * This program and the accompanying materials are dual-licensed under
6    * either the terms of the Eclipse Public License v1.0 as published by
7    * the Eclipse Foundation
8    *
9    *   or (per the licensee's choosing)
10   *
11   * under the terms of the GNU Lesser General Public License version 2.1
12   * as published by the Free Software Foundation.
13   */
14  package ch.qos.logback.classic.corpus;
15  
16  import java.util.Random;
17  
18  public class RandomUtil {
19  
20      /**
21       * Approximate a gaussian distribution with only positive integer values
22       * 
23       * @param average
24       * @param stdDeviation
25       * @return
26       */
27      static public int gaussianAsPositiveInt(Random random, int average, int stdDeviation) {
28          if (average < 1) {
29              throw new IllegalArgumentException("The average must not be smaller than 1.");
30          }
31  
32          if (stdDeviation < 1) {
33              throw new IllegalArgumentException("The stdDeviation must not be smaller than 1.");
34          }
35  
36          double d = random.nextGaussian() * stdDeviation + average;
37          int result = 1;
38          if (d > 1.0) {
39              result = (int) Math.round(d);
40          }
41          return result;
42      }
43  }