001/**
002 * This file is part of the Kompics P2P Framework.
003 *
004 * Copyright (C) 2009 Swedish Institute of Computer Science (SICS) Copyright (C)
005 * 2009 Royal Institute of Technology (KTH)
006 *
007 * Kompics is free software; you can redistribute it and/or modify it under the
008 * terms of the GNU General Public License as published by the Free Software
009 * Foundation; either version 2 of the License, or (at your option) any later
010 * version.
011 *
012 * This program is distributed in the hope that it will be useful, but WITHOUT
013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
014 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
015 * details.
016 *
017 * You should have received a copy of the GNU General Public License along with
018 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
019 * Place - Suite 330, Boston, MA 02111-1307, USA.
020 */
021package se.sics.kompics.simulator.adaptor.distributions;
022
023import java.io.Serializable;
024
025/**
026 * The <code>Distribution</code> class.
027 *
028 * @author Cosmin Arad {@literal <[email protected]>}
029 * @version $Id$
030 */
031public abstract class Distribution<E extends Number> implements Serializable {
032
033    private static final long serialVersionUID = 7789173701412786074L;
034
035    public static enum Type {
036
037        CONSTANT, UNIFORM, NORMAL, EXPONENTIAL, OTHER;
038    };
039
040    private final Type type;
041
042    private final Class<E> numberType;
043
044    protected Distribution(Type type, Class<E> numberType) {
045        this.type = type;
046        this.numberType = numberType;
047    }
048
049    public final Type getType() {
050        return type;
051    }
052
053    public final Class<E> getNumberType() {
054        return numberType;
055    }
056
057    public abstract E draw();
058}