001/**
002 * Logback: the reliable, generic, fast and flexible logging framework.
003 * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
004 *
005 * This program and the accompanying materials are dual-licensed under
006 * either the terms of the Eclipse Public License v1.0 as published by
007 * the Eclipse Foundation
008 *
009 *   or (per the licensee's choosing)
010 *
011 * under the terms of the GNU Lesser General Public License version 2.1
012 * as published by the Free Software Foundation.
013 */
014package ch.qos.logback.classic.corpus;
015
016import java.util.Random;
017
018public class RandomUtil {
019
020    /**
021     * Approximate a gaussian distrib with only positive integer values
022     * 
023     * @param average
024     * @param stdDeviation
025     * @return
026     */
027    static public int gaussianAsPositiveInt(Random random, int average, int stdDeviation) {
028        if (average < 1) {
029            throw new IllegalArgumentException("The average must not be smaller than 1.");
030        }
031
032        if (stdDeviation < 1) {
033            throw new IllegalArgumentException("The stdDeviation must not be smaller than 1.");
034        }
035
036        double d = random.nextGaussian() * stdDeviation + average;
037        int result = 1;
038        if (d > 1.0) {
039            result = (int) Math.round(d);
040        }
041        return result;
042    }
043}