normale_distribution 0.1.0
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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +1 -0
- data/CHANGELOG +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +13 -0
- data/README.md +40 -0
- data/Rakefile +16 -0
- data/certs/nephos.pem +22 -0
- data/lib/normale_distribution.rb +13 -0
- data/lib/normale_distribution/persistant.rb +32 -0
- data/normale_distribution.gemspec +38 -0
- data/test/normale_distribution.rb +33 -0
- data/test/unit_test.rb +7 -0
- data/version +1 -0
- metadata +94 -0
- metadata.gz.sig +1 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 394e4ec0ea40117b42c097903d253d590ea380ea
|
4
|
+
data.tar.gz: a6beebab07d01cd3b7c27f41d0eeac37e194d598
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4423bd75b8939437288ad11562e0745995898a96fc15b788a98ecce6374798e0f57e9bf4e73431002d934a29e8fd4fa74b9fc00ab2159c3e8d93a1c38dc57ee5
|
7
|
+
data.tar.gz: d8f0fd53b27bb9d55b9ba1768791de00c079258113088b6ac2f3a8d595a3c22ec6f2782975ba323af808db7f47c97c35407329b79b1ef4f3ba3f3d2a76875885
|
checksums.yaml.gz.sig
ADDED
data.tar.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Y���lY�YaZ{i\�����F�פ�N'�>k5��2Bw����"�K���b�i�;�0��6��(���I(h�r��y�e���u�������6���f�7'�Dh��M,2��{�(L�z��T���fܦE�+ګr[=V���c���ZH������5�kѕ�k���M�]̉ER�*w�p���g���l�2@� mD�~J���0uE��1�Z>�aU�__T�ZCb�ً���6H�g�+H�;�VŔk.%
|
data/CHANGELOG
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# Normale
|
2
|
+
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
|
6
|
+
```sh
|
7
|
+
gem install normale_distribution
|
8
|
+
```
|
9
|
+
|
10
|
+
or in the ``Gemfile``
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'normale_distribution'
|
14
|
+
```
|
15
|
+
|
16
|
+
|
17
|
+
## Usage in Ruby
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
require 'normale_distribution'
|
21
|
+
|
22
|
+
NormaleDistribution::between standard_deviation: 15, esperance: 100, a: 85, b: 115 # => 0.6826894921370859
|
23
|
+
NormaleDistribution::less_than standard_deviation: 15, esperance: 100, a: 85 # => 0.15865525393145707
|
24
|
+
NormaleDistribution::greater_than standard_deviation: 15, esperance: 100, a: 115 # => 0.15865525393145707
|
25
|
+
```
|
26
|
+
|
27
|
+
|
28
|
+
## Unitary tests
|
29
|
+
|
30
|
+
```sh
|
31
|
+
rake test
|
32
|
+
```
|
33
|
+
|
34
|
+
|
35
|
+
## Contributes !
|
36
|
+
|
37
|
+
Find a bug ? Want a new feature ?
|
38
|
+
Create a clear pull request and we'll see :)
|
39
|
+
|
40
|
+
- Nephos (poulet_a)
|
data/Rakefile
ADDED
data/certs/nephos.pem
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRYwFAYDVQQDDA1hcnRo
|
3
|
+
dXIucG91bGV0MRkwFwYKCZImiZPyLGQBGRYJY3J5cHRvbGFiMRMwEQYKCZImiZPy
|
4
|
+
LGQBGRYDbmV0MB4XDTE1MTAwMzIxNTQyMFoXDTE2MTAwMjIxNTQyMFowSDEWMBQG
|
5
|
+
A1UEAwwNYXJ0aHVyLnBvdWxldDEZMBcGCgmSJomT8ixkARkWCWNyeXB0b2xhYjET
|
6
|
+
MBEGCgmSJomT8ixkARkWA25ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
7
|
+
ggEBANnLB9vH7/O0aUWi0f9VtC7F73zMC1OvxDaJq+qIcmGBFiKPOngDCRyKffWf
|
8
|
+
A6gyf7VsJAlDVFYoyNw7bzLFjBT9gkb5xmED3Uaxvt8Ax131YvKv0sTsQeiTVHHW
|
9
|
+
1crq7266hW1McrFU2A1uQRV8FHuruUJBuP7UUYK7fZi0barbkdAIb4VvQFZxXByI
|
10
|
+
lKdQSuhu8k0RcG1vTACEsQXJIUImc8CWMi8/TG3HidJdASMvIWtV2rNQXlQ+UgIc
|
11
|
+
UeHC0p+SNTrc09H6q+5eH8NRYhJ91xKuLXv7NNy8M3quAMHcQ1GM6DWljc+Jc4cm
|
12
|
+
uAPQMYJf7Vy6OzWLoEiv2QU6sE0CAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
13
|
+
DwQEAwIEsDAdBgNVHQ4EFgQU08cDEZOTZNjP/0+E2unJWyw4NzQwJgYDVR0RBB8w
|
14
|
+
HYEbYXJ0aHVyLnBvdWxldEBjcnlwdG9sYWIubmV0MCYGA1UdEgQfMB2BG2FydGh1
|
15
|
+
ci5wb3VsZXRAY3J5cHRvbGFiLm5ldDANBgkqhkiG9w0BAQUFAAOCAQEAo60BuRZM
|
16
|
+
5Vtn0H0kHHTPiXz09lwxx4cFpTqrTTM0T6qM3gKsR5eLyR1Rt5hGmYLPgY4ZW4zI
|
17
|
+
XcuDbgRJrczZs7AZNy5NXyVWpxCwkZzklpbGTuYQdFz7mKfVyALjLjrilOIktXcz
|
18
|
+
PvB7EoLlqYvq9cnwV3WE1MkRcBd07xpofcp0kxae2dCOZPUq24TcNaRe7Utw6jjA
|
19
|
+
iL0bcH7zZkzMsNoNpPAgsd3ovU4Mf9M+A3M8COmd7KzKyZ0k7P12u5InPWUsNQS2
|
20
|
+
tcYkgfqUJPitIJx1RvWZpIyH5uJhRUYK3+vU9nMOxez5WbIlC1TtpByKAPMX+sht
|
21
|
+
gib3AoIT8jh/2w==
|
22
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative 'normale_distribution/persistant'
|
2
|
+
|
3
|
+
module NormaleDistribution
|
4
|
+
def self.between standard_deviation: nil, esperance: nil, sd: 1.0, e: 0.0, a: nil, b: nil
|
5
|
+
NormaleDistribution::Persistant.new(standard_deviation: standard_deviation||sd, esperance: esperance||e).between a, b
|
6
|
+
end
|
7
|
+
def self.greater_than standard_deviation: nil, esperance: nil, sd: 1.0, e: 0.0, a: nil
|
8
|
+
NormaleDistribution::Persistant.new(standard_deviation: standard_deviation||sd, esperance: esperance||e).greater_than a
|
9
|
+
end
|
10
|
+
def self.less_than standard_deviation: nil, esperance: nil, sd: 1.0, e: 0.0, a: nil, b: nil
|
11
|
+
NormaleDistribution::Persistant.new(standard_deviation: standard_deviation||sd, esperance: esperance||e).less_than a
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module NormaleDistribution
|
2
|
+
class Persistant
|
3
|
+
attr_accessor :standard_deviation, :esperance
|
4
|
+
def initialize standard_deviation: 1.0, esperance: 0.0
|
5
|
+
@standard_deviation = Float(standard_deviation)
|
6
|
+
@esperance = Float(esperance)
|
7
|
+
raise ArgumentError, "standard_deviation must be > 0" unless @standard_deviation > 0.0
|
8
|
+
end
|
9
|
+
|
10
|
+
def greater_than a
|
11
|
+
1 - repartition(a)
|
12
|
+
end
|
13
|
+
|
14
|
+
def less_than a
|
15
|
+
repartition a
|
16
|
+
end
|
17
|
+
|
18
|
+
def between a, b
|
19
|
+
repartition(b) - repartition(a)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def density t
|
24
|
+
#1.0 / (standard_deviation * (2 * Math::PI) ** 0.5) * Math::exp((t - esperance) / (2 * standard_deviation)))
|
25
|
+
end
|
26
|
+
|
27
|
+
def repartition t
|
28
|
+
erf = (Float(t) - esperance) / (standard_deviation * 2.0**0.5)
|
29
|
+
0.5 * (1.0 + Math.erf(erf))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'normale_distribution'
|
3
|
+
s.version = File.read("version")
|
4
|
+
s.date = Time.now.getgm.to_s.split.first
|
5
|
+
s.summary = File.read("CHANGELOG").match(/^v[^\n]+\n((\t[^\n]+\n)+)/m)[1].split("\t").join
|
6
|
+
s.description = 'A ruby implementation of the Normal Distribution'
|
7
|
+
s.authors = ['Nephos (poulet_a)']
|
8
|
+
s.email = ['arthur.poulet@mailoo.org']
|
9
|
+
s.files = %w(
|
10
|
+
lib/normale_distribution.rb
|
11
|
+
lib/normale_distribution/persistant.rb
|
12
|
+
|
13
|
+
README.md
|
14
|
+
CHANGELOG
|
15
|
+
|
16
|
+
Rakefile
|
17
|
+
Gemfile
|
18
|
+
Gemfile.lock
|
19
|
+
normale_distribution.gemspec
|
20
|
+
version
|
21
|
+
|
22
|
+
test/unit_test.rb
|
23
|
+
test/normale_distribution.rb
|
24
|
+
|
25
|
+
certs/nephos.pem
|
26
|
+
)
|
27
|
+
s.executables = %w(
|
28
|
+
)
|
29
|
+
s.homepage = 'https://github.com/Nephos/NormaleDistribution'
|
30
|
+
s.license = 'WTFPL'
|
31
|
+
|
32
|
+
s.cert_chain = ['certs/nephos.pem']
|
33
|
+
s.signing_key = File.expand_path('~/.ssh/gem-private_key.pem') if $0 =~ /gem\z/
|
34
|
+
|
35
|
+
# s.add_dependency 'nephos', '~> 1.0'
|
36
|
+
s.add_dependency 'nomorebeer', '~> 1.1'
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class TestNormale < Test::Unit::TestCase
|
2
|
+
|
3
|
+
def test_simple
|
4
|
+
NormaleDistribution::Persistant.new
|
5
|
+
NormaleDistribution::Persistant.new standard_deviation: 1
|
6
|
+
NormaleDistribution::Persistant.new esperance: 1
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_qi
|
10
|
+
rule = NormaleDistribution::Persistant.new standard_deviation: 15, esperance: 100
|
11
|
+
assert_equal 0.68, rule.between(85, 115).round(2)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_centroid
|
15
|
+
[0.1, 1, 2, 4.1324].each do |space|
|
16
|
+
[0, 1, -1, 12, 41, 0.2, 0.233].each do |center|
|
17
|
+
rule = NormaleDistribution::Persistant.new standard_deviation: space, esperance: center
|
18
|
+
[0.2, 0.4, 0.45, 0.55, 0.94, 1.1].each do |diff|
|
19
|
+
assert_equal -rule.between(diff, center), rule.between(center, diff)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_error
|
26
|
+
assert_raise { NormaleDistribution::Persistant.new 1, 2 }
|
27
|
+
assert_raise { NormaleDistribution::Persistant.new 1 }
|
28
|
+
assert_raise { NormaleDistribution::Persistant.new standard_deviation: "ok" }
|
29
|
+
assert_raise { NormaleDistribution::Persistant.new standard_deviation: -1 }
|
30
|
+
assert_raise { NormaleDistribution::Persistant.new standard_deviation: 0 }
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/test/unit_test.rb
ADDED
data/version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: normale_distribution
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nephos (poulet_a)
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRYwFAYDVQQDDA1hcnRo
|
14
|
+
dXIucG91bGV0MRkwFwYKCZImiZPyLGQBGRYJY3J5cHRvbGFiMRMwEQYKCZImiZPy
|
15
|
+
LGQBGRYDbmV0MB4XDTE1MTAwMzIxNTQyMFoXDTE2MTAwMjIxNTQyMFowSDEWMBQG
|
16
|
+
A1UEAwwNYXJ0aHVyLnBvdWxldDEZMBcGCgmSJomT8ixkARkWCWNyeXB0b2xhYjET
|
17
|
+
MBEGCgmSJomT8ixkARkWA25ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBANnLB9vH7/O0aUWi0f9VtC7F73zMC1OvxDaJq+qIcmGBFiKPOngDCRyKffWf
|
19
|
+
A6gyf7VsJAlDVFYoyNw7bzLFjBT9gkb5xmED3Uaxvt8Ax131YvKv0sTsQeiTVHHW
|
20
|
+
1crq7266hW1McrFU2A1uQRV8FHuruUJBuP7UUYK7fZi0barbkdAIb4VvQFZxXByI
|
21
|
+
lKdQSuhu8k0RcG1vTACEsQXJIUImc8CWMi8/TG3HidJdASMvIWtV2rNQXlQ+UgIc
|
22
|
+
UeHC0p+SNTrc09H6q+5eH8NRYhJ91xKuLXv7NNy8M3quAMHcQ1GM6DWljc+Jc4cm
|
23
|
+
uAPQMYJf7Vy6OzWLoEiv2QU6sE0CAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
24
|
+
DwQEAwIEsDAdBgNVHQ4EFgQU08cDEZOTZNjP/0+E2unJWyw4NzQwJgYDVR0RBB8w
|
25
|
+
HYEbYXJ0aHVyLnBvdWxldEBjcnlwdG9sYWIubmV0MCYGA1UdEgQfMB2BG2FydGh1
|
26
|
+
ci5wb3VsZXRAY3J5cHRvbGFiLm5ldDANBgkqhkiG9w0BAQUFAAOCAQEAo60BuRZM
|
27
|
+
5Vtn0H0kHHTPiXz09lwxx4cFpTqrTTM0T6qM3gKsR5eLyR1Rt5hGmYLPgY4ZW4zI
|
28
|
+
XcuDbgRJrczZs7AZNy5NXyVWpxCwkZzklpbGTuYQdFz7mKfVyALjLjrilOIktXcz
|
29
|
+
PvB7EoLlqYvq9cnwV3WE1MkRcBd07xpofcp0kxae2dCOZPUq24TcNaRe7Utw6jjA
|
30
|
+
iL0bcH7zZkzMsNoNpPAgsd3ovU4Mf9M+A3M8COmd7KzKyZ0k7P12u5InPWUsNQS2
|
31
|
+
tcYkgfqUJPitIJx1RvWZpIyH5uJhRUYK3+vU9nMOxez5WbIlC1TtpByKAPMX+sht
|
32
|
+
gib3AoIT8jh/2w==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: nomorebeer
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '1.1'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '1.1'
|
50
|
+
description: A ruby implementation of the Normal Distribution
|
51
|
+
email:
|
52
|
+
- arthur.poulet@mailoo.org
|
53
|
+
executables: []
|
54
|
+
extensions: []
|
55
|
+
extra_rdoc_files: []
|
56
|
+
files:
|
57
|
+
- CHANGELOG
|
58
|
+
- Gemfile
|
59
|
+
- Gemfile.lock
|
60
|
+
- README.md
|
61
|
+
- Rakefile
|
62
|
+
- certs/nephos.pem
|
63
|
+
- lib/normale_distribution.rb
|
64
|
+
- lib/normale_distribution/persistant.rb
|
65
|
+
- normale_distribution.gemspec
|
66
|
+
- test/normale_distribution.rb
|
67
|
+
- test/unit_test.rb
|
68
|
+
- version
|
69
|
+
homepage: https://github.com/Nephos/NormaleDistribution
|
70
|
+
licenses:
|
71
|
+
- WTFPL
|
72
|
+
metadata: {}
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 2.5.1
|
90
|
+
signing_key:
|
91
|
+
specification_version: 4
|
92
|
+
summary: "* Initialize project"
|
93
|
+
test_files: []
|
94
|
+
has_rdoc:
|
metadata.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
k�����N���'#�О�dz�}k��N�^�"g�>�xADf��<c�!�j��,���lHt�&Uݗi]P��C�'*ՁL\�߇�@��d�dCמQN\.i����tl�%���B���#�X���v�Y���j�,%�6���E��Ak����jҕ����I���:SV�o[�}����%�D/�A|M�I��
|