vose 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/vose/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vose
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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] = k
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, 0.01
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, this is a slow test. Consider it an acceptance
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
- it "allows you choose the next probablity given your inputs" do
28
- probabilities = [0.1, 0.5, 0.4]
29
- vose = Vose::AliasMethod.new probabilities
30
- results = []
31
- 10000.times { results << vose.next }
32
- results.must_match_probability probabilities
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.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: &70162015828460 !ruby/object:Gem::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: *70162015828460
24
+ version_requirements: *70253871221700
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ruby_gntp
27
- requirement: &70162015828000 !ruby/object:Gem::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: *70162015828000
35
+ version_requirements: *70253871221140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: guard-minitest
38
- requirement: &70162015827520 !ruby/object:Gem::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: *70162015827520
46
+ version_requirements: *70253871220680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: guard-bundler
49
- requirement: &70162015827040 !ruby/object:Gem::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: *70162015827040
57
+ version_requirements: *70253871220260
58
58
  description: ! 'Vose: Sample random values from a discrete probability distribution.
59
59
 
60
60
  '