fortune 0.0.2 → 0.0.3
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/README.md +19 -0
- data/lib/fortune/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -31,16 +31,21 @@ Or install it yourself as:
|
|
31
31
|
#### For Hash
|
32
32
|
|
33
33
|
Recalculation of the key values to probability, assuming that P = 1
|
34
|
+
|
34
35
|
```ruby
|
35
36
|
{:a => 1, :b => 2, :c => 3}.to_p
|
36
37
|
# => {:a=>0.16666666666666666, :b=>0.3333333333333333, :c=>0.5}
|
37
38
|
```
|
39
|
+
|
38
40
|
Select random key by value weights
|
41
|
+
|
39
42
|
```ruby
|
40
43
|
{:a => 1, :b => 2, :c => 3}.choose
|
41
44
|
# => return :c with 50% probability, :a ~ 16%, :b ~ 33%
|
42
45
|
```
|
46
|
+
|
43
47
|
Choose from set by value weights
|
48
|
+
|
44
49
|
```ruby
|
45
50
|
{[:a, :b, :c] => 1, [:d] => 3}.choose_set
|
46
51
|
# => return :d with 75% probability
|
@@ -49,6 +54,7 @@ Choose from set by value weights
|
|
49
54
|
#### Probability
|
50
55
|
|
51
56
|
Some methods for P
|
57
|
+
|
52
58
|
```ruby
|
53
59
|
p = Fortune::P.new(:m => 1, :n => 10)
|
54
60
|
p = Fortune::P.new(1, 10)
|
@@ -65,14 +71,19 @@ p.odds.to_s # => "1:9.0 on_win (p: 10.00%)"
|
|
65
71
|
```
|
66
72
|
|
67
73
|
Check event is occured
|
74
|
+
|
68
75
|
```ruby
|
69
76
|
Fortune::P.is(1,10) # => false (90%)
|
70
77
|
```
|
78
|
+
|
71
79
|
Select random element
|
80
|
+
|
72
81
|
```ruby
|
73
82
|
Fortune::P.n(3) # => 1 or 2 or 3
|
74
83
|
```
|
84
|
+
|
75
85
|
Select random key from array or range by weights ({P.n(key) => weight, ...}, P(sum(weights)) = 1)
|
86
|
+
|
76
87
|
```ruby
|
77
88
|
Fortune::P.n_select(10 => 1, 5 => 1000) # => 4
|
78
89
|
Fortune::P.n_select((1..10) => 1, (100..200) => 1000) # => 157
|
@@ -81,6 +92,7 @@ Fortune::P.n_select([:a,:b,:c] => 1, [:d,:e] => 1000) # => :d
|
|
81
92
|
|
82
93
|
#### Odds
|
83
94
|
Class for odds calculations
|
95
|
+
|
84
96
|
```ruby
|
85
97
|
odds = Fortune::Odds.new(:win => 5, :lose => 6)
|
86
98
|
# => #<Fortune::Odds:0x000000026ccf08 @p=0.45454545454545453, @s=5, @k=6, @type=:on_win>
|
@@ -90,13 +102,17 @@ odds > odds_other # => true
|
|
90
102
|
odds.variants # => 11
|
91
103
|
odds.p # => 0.45454545454545453
|
92
104
|
```
|
105
|
+
|
93
106
|
Large values can be simple converted to human view
|
107
|
+
|
94
108
|
```ruby
|
95
109
|
Fortune::Odds.new(:win => 1345, :lose => 3623).to_s # => "1345:3623 on_win (p: 27.07%)"
|
96
110
|
Fortune::Odds.new(:win => 1345, :lose => 3623).to_human.to_s # => "2:5 on_win (p: 28.57%)"
|
97
111
|
Fortune::Odds.new(:win => 1345, :lose => 3623).to_human(:k => 5, :fractions => true).to_s # => "1.5:4 on_win (p: 27.27%)"
|
98
112
|
```
|
113
|
+
|
99
114
|
Reverse odds to lose
|
115
|
+
|
100
116
|
```ruby
|
101
117
|
odds = Fortune::Odds.new(:win => 5, :lose => 6)
|
102
118
|
# => #<Fortune::Odds:0x00000002822e98 @p=0.45454545454545453, @s=5, @k=6, @type=:on_win>
|
@@ -113,6 +129,7 @@ odds.to_lose
|
|
113
129
|
Permutation without repetition with select k elements.
|
114
130
|
|
115
131
|
Example: 20 different elements and you need select 5 of them (how many ways of selection exists?). Elements is ordered ([a,b,c] != [b,c,a])
|
132
|
+
|
116
133
|
```ruby
|
117
134
|
Fortune::A.calc(:elements => 10, :select => 5) # => 30240
|
118
135
|
```
|
@@ -126,7 +143,9 @@ Example: the amount of distributions of the four teams in four places
|
|
126
143
|
```ruby
|
127
144
|
Fortune::Pn.calc(4) # => 24
|
128
145
|
```
|
146
|
+
|
129
147
|
other examples
|
148
|
+
|
130
149
|
```ruby
|
131
150
|
Fortune::Pn.calc(:elements => 5) # => 120
|
132
151
|
Fortune::Pn.calc(:elements => 5, :select => 2) # => 20
|
data/lib/fortune/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fortune
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -114,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
114
114
|
version: '0'
|
115
115
|
segments:
|
116
116
|
- 0
|
117
|
-
hash:
|
117
|
+
hash: -3789787947405274073
|
118
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
119
|
none: false
|
120
120
|
requirements:
|
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
123
|
version: '0'
|
124
124
|
segments:
|
125
125
|
- 0
|
126
|
-
hash:
|
126
|
+
hash: -3789787947405274073
|
127
127
|
requirements: []
|
128
128
|
rubyforge_project:
|
129
129
|
rubygems_version: 1.8.25
|