1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
* Hyperbolic Graph Generator
*
* Chiara Orsini, CAIDA, UC San Diego
* chiara@caida.org
*
* Copyright (C) 2014 The Regents of the University of California.
*
* This file is part of the Hyperbolic Graph Generator.
*
* The Hyperbolic Graph Generator is free software: you can redistribute
* it and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* The Hyperbolic Graph Generator is distributed in the hope that it will
* be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the Hyperbolic Graph Generator.
* If not, see <http://www.gnu.org/licenses/>.
*
*/
use crate*;
/* How to extract from any probability distribution:
* The probability integral transform states that if X is
* a continuous random variable with cumulative distribution
* function F_X, then the random variable Y=F_X(X) has a
* uniform distribution on [0, 1].
* The inverse probability integral transform is just the
* inverse of this: specifically, if Y has a uniform distribution
* on [0, 1] and if X has a cumulative distribution F_X, then
* the cumulative distribution function of the random variable
* F_X^{-1}(Y) is F_X .
* REF: http://en.wikipedia.org/wiki/Inverse_transform_sampling
*/
/* extract a radial coordinate value uniformly from an
* exponential distribution (0,radius)
*/
/* extract a radial coordinate value quasi-uniformly from an
* exponential distribution (0,radius). alpha defines how
* uniform is the extraction.
*/
/* extract an angular coordinate value uniformly at random
* from the uniform distribution [0, 2 PI]
*/