Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_random_source.cpp
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
3
*
4
* SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#include "
kis_random_source.h
"
8
9
#include <boost/random/normal_distribution.hpp>
10
#include <boost/random/taus88.hpp>
11
#include <boost/random/uniform_smallint.hpp>
12
13
#include <QRandomGenerator>
14
15
struct
KisRandomSource::Private
16
{
17
Private
()
18
:
uniformSource
(QRandomGenerator::global()->
generate
()) {}
19
20
Private
(
int
seed)
21
:
uniformSource
(seed) {}
22
29
boost::taus88
uniformSource
;
30
};
31
32
33
KisRandomSource::KisRandomSource
()
34
: m_d(new
Private
)
35
{
36
}
37
38
KisRandomSource::KisRandomSource
(
int
seed)
39
: m_d(new
Private
(seed))
40
{
41
}
42
43
KisRandomSource::KisRandomSource
(
const
KisRandomSource
&rhs)
44
:
KisShared
(),
45
m_d(new
Private
(*rhs.m_d))
46
{
47
}
48
49
KisRandomSource
&
KisRandomSource::operator=
(
const
KisRandomSource
&rhs)
50
{
51
if
(
this
!= &rhs) {
52
*
m_d
= *rhs.
m_d
;
53
}
54
55
return
*
this
;
56
}
57
58
KisRandomSource::~KisRandomSource
()
59
{
60
}
61
62
qint64
KisRandomSource::generate
()
const
63
{
64
return
m_d
->uniformSource();
65
}
66
67
int
KisRandomSource::generate
(
int
min,
int
max)
const
68
{
69
boost::uniform_smallint<int> smallint(min, max);
70
return
smallint(
m_d
->uniformSource);
71
}
72
73
qreal
KisRandomSource::generateNormalized
()
const
74
{
75
const
qint64
v
=
m_d
->uniformSource();
76
const
qint64 max =
m_d
->uniformSource.max();
77
// we don't have min, because taus88 is always positive
78
79
return
qreal(
v
) / max;
80
}
81
82
qreal
KisRandomSource::generateGaussian
(qreal mean, qreal sigma)
const
83
{
84
boost::normal_distribution<qreal> normal(mean, sigma);
85
return
normal(
m_d
->uniformSource);
86
}
v
qreal v
Definition
KisBezierUtils.cpp:702
KisRandomSource
Definition
kis_random_source.h:33
KisRandomSource::generateNormalized
qreal generateNormalized() const
Definition
kis_random_source.cpp:73
KisRandomSource::m_d
const QScopedPointer< Private > m_d
Definition
kis_random_source.h:64
KisRandomSource::~KisRandomSource
~KisRandomSource()
Definition
kis_random_source.cpp:58
KisRandomSource::generateGaussian
qreal generateGaussian(qreal mean, qreal sigma) const
Definition
kis_random_source.cpp:82
KisRandomSource::KisRandomSource
KisRandomSource()
Definition
kis_random_source.cpp:33
KisRandomSource::generate
qint64 generate() const
Definition
kis_random_source.cpp:62
KisRandomSource::operator=
KisRandomSource & operator=(const KisRandomSource &rhs)
Definition
kis_random_source.cpp:49
KisShared
Definition
kis_shared.h:14
kis_random_source.h
Private
Definition
SvgTransformParser.cpp:20
KisRandomSource::Private
Definition
kis_random_source.cpp:16
KisRandomSource::Private::uniformSource
boost::taus88 uniformSource
Definition
kis_random_source.cpp:29
KisRandomSource::Private::Private
Private()
Definition
kis_random_source.cpp:17
KisRandomSource::Private::Private
Private(int seed)
Definition
kis_random_source.cpp:20
libs
global
kis_random_source.cpp
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52