@@ -68,9 +68,12 @@ def test_random():
68
68
),
69
69
)
70
70
71
+
72
+ def test_seed_normal ():
73
+ seed(42 )
71
74
# verify `randn_float64` values are normally distributed
72
- var samples = List[Float64]()
73
- var num_samples = 1_000_000
75
+ var num_samples = 1000
76
+ var samples = List[Float64]( capacity = num_samples)
74
77
for _ in range (num_samples):
75
78
samples.append(randn_float64(0 , 2 ))
76
79
@@ -82,31 +85,32 @@ def test_random():
82
85
83
86
var sum_sq : Float64 = 0.0
84
87
for sample in samples:
85
- sum_sq += (sample[] - mean) * (sample[] - mean)
88
+ sum_sq += (sample[] - mean) ** 2
86
89
87
90
var variance = sum_sq / num_samples
88
91
89
92
# Calculate absolute differences (errors)
90
- var mean_error = mean if mean > 0 else - mean
91
- var variance_error = variance - 4 if variance > 4 else 4 - variance
93
+ var mean_error = abs ( mean)
94
+ var variance_error = abs ( variance - 4 )
92
95
93
- var tolerance : Float64 = 0.01
96
+ var mean_tolerance : Float64 = 0.06 # SE_μ = σ / √n
94
97
assert_true(
95
- mean_error < tolerance ,
98
+ mean_error < mean_tolerance ,
96
99
String(
97
100
" Mean error " ,
98
101
mean_error,
99
102
" is above the accepted tolerance " ,
100
- tolerance ,
103
+ mean_tolerance ,
101
104
),
102
105
)
106
+ var variance_tolerance : Float64 = 0.57 # SE_S² = √(2 * σ^4 / (n - 1))
103
107
assert_true(
104
- variance_error < tolerance ,
108
+ variance_error < variance_tolerance ,
105
109
String(
106
110
" Variance error " ,
107
111
variance_error,
108
112
" is above the accepted tolerance " ,
109
- tolerance ,
113
+ variance_tolerance ,
110
114
),
111
115
)
112
116
0 commit comments