/****************************************************************************/1// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo2// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.3// This program and the accompanying materials are made available under the4// terms of the Eclipse Public License 2.0 which is available at5// https://www.eclipse.org/legal/epl-2.0/6// This Source Code may also be made available under the following Secondary7// Licenses when the conditions for such availability set forth in the Eclipse8// Public License 2.0 are satisfied: GNU General Public License, version 29// or later which is available at10// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html11// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later12/****************************************************************************/13/// @file Distribution.h14/// @author Daniel Krajzewicz15/// @date Sept 200216///17// The base class for distribution descriptions.18/****************************************************************************/19#pragma once20#include <config.h>2122#include <utils/common/Named.h>23#include <utils/common/RandHelper.h>242526// ===========================================================================27// class definitions28// ===========================================================================29/**30* @class Distribution31* The base class for distribution descriptions. Only an interface32* specification.33*/34class Distribution : public Named {35public:36/// Constructor37Distribution(const std::string& id) : Named(id) { }3839/// Destructor40virtual ~Distribution() { }4142/** @brief Draw a sample of the distribution.43*44* A random sample is drawn according to the assigned probabilities.45*46* @param[in] which The random number generator to use; the static one will be used if nullptr is passed47* @return the drawn member48*/49virtual double sample(SumoRNG* which = nullptr) const = 0;5051/// Returns the maximum value of this distribution52virtual double getMax() const = 0;5354/// Returns the string representation of this distribution55virtual std::string toStr(std::streamsize accuracy) const = 0;5657};585960