Skip to content

Commit cc700e9

Browse files
committed
halton sequence added
1 parent 676c5d5 commit cc700e9

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

src/NumericalAlgorithms.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export primes_1000
2323
export FindRoot1D, FindRootND
2424
export Dual
2525
export CalcSingleIntegral, CalcDoubleIntegral
26-
export LFG, RANMAR, vanderCorputSeq
26+
export LFG, RANMAR, vanderCorputSeq, haltonSeq
2727
export RunsTest
2828

2929
end # module

src/Random.jl

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,19 @@ function Base.rand(rng::RANMAR)
7979
end
8080

8181
"van der Corput sequence, simplest one-dimensional low-discrepancy sequence over the unit interval."
82-
function vanderCorputSeq(n, b)
83-
bn = 0
82+
function vanderCorputSeq(i, b)
83+
bi = 0
8484
j = 0
85-
while n != 0
86-
bn += mod(n, b) / (b^(j + 1))
87-
n = floor(n / b)
85+
while i != 0
86+
bi += mod(i, b) / (b^(j + 1))
87+
i = floor(i / b)
8888
j += 1
8989
end
90-
bn
90+
bi
9191
end
92+
93+
"Halton sequence"
94+
function haltonSeq(i, m)
95+
hseq = [vanderCorputSeq(i, primes_1000[j]) for j = 1:m]
96+
hseq
97+
end

test/runtests.jl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,13 @@ end
121121
seq1 = [vanderCorputSeq(i, 2) for i = 1:9]
122122
expected_seq1 = [0.5, 0.25, 0.75, 0.125, 0.625, 0.375, 0.875, 0.0625, 0.5625]
123123
seq2 = [vanderCorputSeq(i, 3) for i = 1:9]
124-
expected_seq2 = [1 / 3, 2 / 3, 1 / 9, 4 / 9, 7 / 9, 2 / 9, 5 / 9, 8 / 9, 1 / 27]
124+
expected_seq2 = [0.33, 0.66, 0.11, 0.44, 0.77, 0.22, 0.55, 0.88, 0.03]
125125
@test seq1 == expected_seq1
126-
@test seq2 expected_seq2 atol = 1e-3
126+
@test seq2 expected_seq2 atol = 1e-1
127+
128+
hseq1 = haltonSeq(3, 4)
129+
expected_hseq1 = [0.75, 0.11, 0.6, 0.42]
130+
@test hseq1 expected_hseq1 atol = 1e-2
127131
end
128132

129133
@testset "Runs test for randomness" begin

0 commit comments

Comments
 (0)