NCBI C++ ToolKit
distribution.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: distribution.cpp 74364 2016-08-29 13:53:40Z sadyrovr $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Authors:
27  * Dmitry Kazimirov
28  *
29  * File Description:
30  * Implementations of the CDiscreteDistribution class.
31  */
32 
33 #include <ncbi_pch.hpp>
34 
35 #include <util/distribution.hpp>
36 #include <util/random_gen.hpp>
37 
39 
41 {
42  CRandom::TValue random_number = m_RandomGen->GetRand();
43 
44  CRangeListImpl::TRangeVector::const_iterator random_range =
45  m_RangeVector.begin() + (random_number % m_RangeVector.size());
46 
47  int diff = random_range->second - random_range->first;
48 
49  return diff <= 0 ? random_range->first :
50  random_range->first + (random_number % (diff + 1));
51 }
52 
CRangeListImpl::TRangeVector m_RangeVector
unsigned GetNextValue() const
Uint4 TValue
Type of the generated integer value and/or the seed value.
Definition: random_gen.hpp:69
TValue GetRand(void)
Get the next random number in the interval [0..GetMax()] (inclusive)
Definition: random_gen.hpp:238
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
Modified on Wed Jun 12 11:18:40 2024 by modify_doxy.py rev. 669887