Module: FsrsRuby
- Defined in:
- lib/fsrs_ruby.rb,
lib/fsrs_ruby.rb,
lib/fsrs_ruby/alea.rb,
lib/fsrs_ruby/models.rb,
lib/fsrs_ruby/helpers.rb,
lib/fsrs_ruby/version.rb,
lib/fsrs_ruby/algorithm.rb,
lib/fsrs_ruby/constants.rb,
lib/fsrs_ruby/parameters.rb,
lib/fsrs_ruby/fsrs_instance.rb,
lib/fsrs_ruby/type_converter.rb,
lib/fsrs_ruby/strategies/seed.rb,
lib/fsrs_ruby/schedulers/base_scheduler.rb,
lib/fsrs_ruby/strategies/learning_steps.rb,
lib/fsrs_ruby/schedulers/basic_scheduler.rb,
lib/fsrs_ruby/schedulers/long_term_scheduler.rb
Overview
A port of Alea algorithm by Johannes Baagøe github.com/davidbau/seedrandom/blob/released/lib/alea.js Original work is under MIT license
Defined Under Namespace
Modules: Constants, Helpers, ParameterUtils, Rating, Schedulers, State, Strategies Classes: Alea, Algorithm, Card, Error, FSRSInstance, Mash, Parameters, RecordLogItem, ReviewLog, TypeConverter
Constant Summary collapse
- VERSION =
'1.0.0'- FSRS_VERSION =
"v#{VERSION} using FSRS-6.0"
Class Method Summary collapse
-
.alea(seed = nil) ⇒ Proc
Factory function for creating Alea PRNG with callable interface.
-
.create_empty_card(now = nil) ⇒ Card
Create an empty card.
-
.new(params = {}) ⇒ FSRSInstance
Factory method to create FSRS instance.
Class Method Details
.alea(seed = nil) ⇒ Proc
Factory function for creating Alea PRNG with callable interface
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/fsrs_ruby/alea.rb', line 77 def self.alea(seed = nil) xg = Alea.new(seed) prng = lambda { xg.next } # Add methods to the proc prng.define_singleton_method(:int32) do (xg.next * 0x100000000).to_i end prng.define_singleton_method(:double) do prng.call + ((prng.call * 0x200000).to_i * 1.1102230246251565e-16) # 2^-53 end prng.define_singleton_method(:state) do xg.state end prng.define_singleton_method(:import_state) do |state| xg.state = state prng end prng end |
.create_empty_card(now = nil) ⇒ Card
Create an empty card
35 36 37 |
# File 'lib/fsrs_ruby.rb', line 35 def self.create_empty_card(now = nil) ParameterUtils.create_empty_card(now) end |
.new(params = {}) ⇒ FSRSInstance
Factory method to create FSRS instance
28 29 30 |
# File 'lib/fsrs_ruby.rb', line 28 def self.new(params = {}) FSRSInstance.new(params) end |