vose 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/vose/version.rb +1 -1
- data/lib/vose.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/vose_spec.rb +20 -7
- metadata +9 -9
data/lib/vose/version.rb
CHANGED
data/lib/vose.rb
CHANGED
@@ -52,7 +52,7 @@ module Vose
|
|
52
52
|
|
53
53
|
scaled_probality[current_large_worklist_index] = (scaled_probality[current_large_worklist_index] + scaled_probality[current_small_worklist_index]) - 1
|
54
54
|
if scaled_probality[current_large_worklist_index] > 1
|
55
|
-
large_worklist[large_worklist_counter] =
|
55
|
+
large_worklist[large_worklist_counter] = large_worklist_counter
|
56
56
|
large_worklist_counter+=1
|
57
57
|
else
|
58
58
|
small_worklist[small_worklist_counter] = current_large_worklist_index
|
data/spec/spec_helper.rb
CHANGED
@@ -7,7 +7,7 @@ module MiniTest::Assertions
|
|
7
7
|
def assert_vose_probability(probabilities, results)
|
8
8
|
probabilities.each_with_index do |probablity, i|
|
9
9
|
percentage = results.count(i) / results.size.to_f
|
10
|
-
assert_in_delta probablity, percentage,
|
10
|
+
assert_in_delta probablity, percentage, 1
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
data/spec/vose_spec.rb
CHANGED
@@ -21,14 +21,27 @@ describe Vose::AliasMethod do
|
|
21
21
|
vose.limit.must_equal 2
|
22
22
|
end
|
23
23
|
|
24
|
-
# Yes,
|
24
|
+
# Yes, these are slow tests. Consider it an acceptance
|
25
25
|
# level test :) Patches are welcome. Testing rand is hard or
|
26
26
|
# brittle imho.
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
describe "acceptance" do
|
28
|
+
it "allows for possibilities which add up to more than 1" do
|
29
|
+
probabilities = [1.2, 0.4, 0.4]
|
30
|
+
vose = Vose::AliasMethod.new probabilities
|
31
|
+
results = []
|
32
|
+
100000.times { results << vose.next }
|
33
|
+
|
34
|
+
sum = probabilities.reduce(:+)
|
35
|
+
expected_percentages = probabilities.map{|p| p/sum}
|
36
|
+
results.must_match_probability expected_percentages
|
37
|
+
end
|
38
|
+
|
39
|
+
it "allows you choose the next probablity given your inputs" do
|
40
|
+
probabilities = [0.1, 0.5, 0.4]
|
41
|
+
vose = Vose::AliasMethod.new probabilities
|
42
|
+
results = []
|
43
|
+
100000.times { results << vose.next }
|
44
|
+
results.must_match_probability probabilities
|
45
|
+
end
|
33
46
|
end
|
34
47
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-05-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pry
|
16
|
-
requirement: &
|
16
|
+
requirement: &70253871221700 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70253871221700
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: ruby_gntp
|
27
|
-
requirement: &
|
27
|
+
requirement: &70253871221140 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70253871221140
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: guard-minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70253871220680 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70253871220680
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: guard-bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &70253871220260 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70253871220260
|
58
58
|
description: ! 'Vose: Sample random values from a discrete probability distribution.
|
59
59
|
|
60
60
|
'
|