@@ -127,22 +127,17 @@ function randbn(
127
127
end
128
128
129
129
" maps 1:binomial(n,2) into an upper triangle of [1,n]×[1,n]"
130
- function trianglemap (r)
131
- j = floor (Int, (1 + sqrt (8 r- 7 ))/ 2 ) + 1
132
- i = r - binomial (j- 1 ,2 )
133
- Edge (i, j)
130
+ function trianglemap (r, n)
131
+ j, i = fldmod1 (r, n - 1 )
132
+ i ≥ j ? Edge (i + 1 , j) : Edge (n - i + 1 , n - j + 1 )
134
133
end
135
134
136
135
" maps 1:n*(n-1) into non-diagonal elements of [1,n]×[1,n]"
137
- function nondiagmap (r,n)
138
- j = div (r- 1 , n- 1 )
139
- i = r - j* (n- 1 )
140
- j += 1
141
- i += (i >= j)
142
- Edge (i, j)
136
+ function nondiagmap (r, n)
137
+ j, i = fldmod1 (r, n - 1 )
138
+ i ≥ j ? Edge (i + 1 , j) : Edge (i, j)
143
139
end
144
140
145
-
146
141
"""
147
142
erdos_renyi(n, p)
148
143
@@ -182,7 +177,7 @@ function erdos_renyi(
182
177
g = if is_directed
183
178
SimpleDiGraphFromIterator (nondiagmap (r,n) for r in seq)
184
179
else
185
- SimpleGraphFromIterator (trianglemap (r) for r in seq)
180
+ SimpleGraphFromIterator (trianglemap (r,n ) for r in seq)
186
181
end
187
182
# complete to exactly n vertices
188
183
add_vertices! (g, n - nv (g))
0 commit comments