File tree 2 files changed +9
-11
lines changed
2 files changed +9
-11
lines changed Original file line number Diff line number Diff line change @@ -29,27 +29,26 @@ use distributions::{Distribution, Uniform};
29
29
/// NBS Appl. Math. Ser., No. 12. Washington, DC: U.S. Government Printing
30
30
/// Office, pp. 36-38.
31
31
#[ derive( Clone , Copy , Debug ) ]
32
- pub struct UnitCircle {
33
- uniform : Uniform < f64 > ,
34
- }
32
+ pub struct UnitCircle ;
35
33
36
34
impl UnitCircle {
37
35
/// Construct a new `UnitCircle` distribution.
38
36
#[ inline]
39
37
pub fn new ( ) -> UnitCircle {
40
- UnitCircle { uniform : Uniform :: new ( - 1. , 1. ) }
38
+ UnitCircle
41
39
}
42
40
}
43
41
44
42
impl Distribution < [ f64 ; 2 ] > for UnitCircle {
45
43
#[ inline]
46
44
fn sample < R : Rng + ?Sized > ( & self , rng : & mut R ) -> [ f64 ; 2 ] {
45
+ let uniform = Uniform :: new ( -1. , 1. ) ;
47
46
let mut x1;
48
47
let mut x2;
49
48
let mut sum;
50
49
loop {
51
- x1 = self . uniform . sample ( rng) ;
52
- x2 = self . uniform . sample ( rng) ;
50
+ x1 = uniform. sample ( rng) ;
51
+ x2 = uniform. sample ( rng) ;
53
52
sum = x1* x1 + x2* x2;
54
53
if sum < 1. {
55
54
break ;
Original file line number Diff line number Diff line change @@ -28,23 +28,22 @@ use distributions::{Distribution, Uniform};
28
28
/// Sphere.*](https://doi.org/10.1214/aoms/1177692644)
29
29
/// Ann. Math. Statist. 43, no. 2, 645--646.
30
30
#[ derive( Clone , Copy , Debug ) ]
31
- pub struct UnitSphereSurface {
32
- uniform : Uniform < f64 > ,
33
- }
31
+ pub struct UnitSphereSurface ;
34
32
35
33
impl UnitSphereSurface {
36
34
/// Construct a new `UnitSphereSurface` distribution.
37
35
#[ inline]
38
36
pub fn new ( ) -> UnitSphereSurface {
39
- UnitSphereSurface { uniform : Uniform :: new ( - 1. , 1. ) }
37
+ UnitSphereSurface
40
38
}
41
39
}
42
40
43
41
impl Distribution < [ f64 ; 3 ] > for UnitSphereSurface {
44
42
#[ inline]
45
43
fn sample < R : Rng + ?Sized > ( & self , rng : & mut R ) -> [ f64 ; 3 ] {
44
+ let uniform = Uniform :: new ( -1. , 1. ) ;
46
45
loop {
47
- let ( x1, x2) = ( self . uniform . sample ( rng) , self . uniform . sample ( rng) ) ;
46
+ let ( x1, x2) = ( uniform. sample ( rng) , uniform. sample ( rng) ) ;
48
47
let sum = x1* x1 + x2* x2;
49
48
if sum >= 1. {
50
49
continue ;
You can’t perform that action at this time.
0 commit comments