random 0.2.0 → 0.2.1

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.
Files changed (4) hide show
  1. data/Rakefile +11 -3
  2. data/VERSION +1 -1
  3. data/test/common.rb +44 -0
  4. metadata +2 -1
data/Rakefile CHANGED
@@ -64,9 +64,16 @@ UTestFiles = FileList["test/unit/**/test*.rb"]
64
64
  ATestFiles = FileList["test/acceptance/**/*test*.rb"]
65
65
  PTestFiles = FileList["test/performance/**/test*.rb"]
66
66
 
67
- task :setup_for_test => [:pack_and_geminstall] do
68
- require 'rubygems'
69
- require 'test/common'
67
+ if File.exist?("_darcs")
68
+ task :setup_for_test => [:pack_and_geminstall] do
69
+ require 'rubygems'
70
+ require 'test/common'
71
+ end
72
+ else
73
+ task :setup_for_test do
74
+ require 'rubygems'
75
+ require 'test/common'
76
+ end
70
77
  end
71
78
 
72
79
  def load_files(list)
@@ -142,6 +149,7 @@ TestFilesToIncludeGlobs = [
142
149
  "test/acceptance/**/*",
143
150
  "test/performance/**/*",
144
151
  "test/unit/**/*",
152
+ "test/*.rb",
145
153
  ]
146
154
 
147
155
  PkgFileGlobs = BaseFileToIncludeGlobs + TestFilesToIncludeGlobs
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -0,0 +1,44 @@
1
+ require 'test/unit'
2
+
3
+ require 'random/testing'
4
+
5
+ class Test::Unit::TestCase
6
+ def assert_chi_square(reps = 1e4, &block)
7
+ alpha = 0.005
8
+ bin_counts = Hash.new(0)
9
+ reps.to_i.times {bin_counts[block.call] += 1}
10
+ result = Random::Testing.chi_square_test(bin_counts, alpha)
11
+ if result
12
+ assert(true)
13
+ else
14
+ crit =
15
+ Math::Statistics.critical_chi_square_value(bin_counts.keys.length - 1,
16
+ alpha)
17
+ chisq = Random::Testing.chi_square_statistic(bin_counts.values)
18
+ assert(false, "Expected a chi square value > #{crit} but got #{chisq} for #{bin_counts.inspect}")
19
+ end
20
+ end
21
+
22
+ def assert_chi_square_floats(numBins = 10, reps = 1e4, &block)
23
+ w = 1.0 / numBins
24
+ assert_chi_square(reps) do
25
+ v = block.call
26
+ res = w * (v/w).floor
27
+ #puts "#{v.inspect}, #{w.inspect}"
28
+ res
29
+ end
30
+ end
31
+
32
+ def assert_rand(rng)
33
+ assert_kind_of(Float, rng.rand)
34
+ assert_kind_of(Float, rng.rand(0))
35
+ assert_kind_of(Float, rng.rand(0.0))
36
+ assert_kind_of(Float, rng.rand(0.99))
37
+
38
+ assert_equal(0, rng.rand(1.0))
39
+ 100.times {assert_equal(0, rng.rand(1))}
40
+
41
+ # Very unlikely that we would get a fixnum out of this but it can happen
42
+ assert_kind_of(Bignum, rng.rand(2**10000))
43
+ end
44
+ end
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: random
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.0
6
+ version: 0.2.1
7
7
  date: 2006-04-13 00:00:00 +02:00
8
8
  summary: Stand-alone random number generator (RNG) class allowing multiple, active RNG's at the same time (which is not possible with Ruby's rand/srand).
9
9
  require_paths:
@@ -55,6 +55,7 @@ files:
55
55
  - test/unit/test_chi_square.rb
56
56
  - test/unit/#mt19937ar.c#
57
57
  - test/unit/test_random_number_generator.rb
58
+ - test/common.rb
58
59
  test_files: []
59
60
 
60
61
  rdoc_options: []