Simple time series data generation
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Gem Version Build Status

A simple tool for statefully generating time-series data. Requires Ruby 1.9 or greater.


In your shell:

gem install quixote

Then, in your application or script:

require 'quixote'

Basic Usage

For each data stream you want to generate, set up a Quixote object. Here are some examples:

percentage = 0, max: 100, range_by: 10)
fahrenheit = -30.0, max: 120.0, range_by: 3.0)

If you don't specify any initialization options the object will be assumed to be a percentage and will default to the settings of the percentage object above.

An initial value will be randomly generated and can be accessed with #last:

percentage.last #=> 58

If you want to enforce a certain starting value, you can provide that as well:

percentage = 15, min: 0, max: 100, range_by: 10)

By default each following value will range up or down by a random value up to a max of range_by. To get a series of stateful values just call #next: #=> 64 #=> 66 #=> 58

This makes it trivial to generate stateful runs of any length you want:

values = []
100.times { values << }

values #=> [49, 55, 48, …]

You can use #last to retrieve the most recently generated number or move the range to a number you select at any time.

Custom Progressions

If you want more complex progression behavior you can provide your own lambda:

by_two = ->(last) { last + 2 }
incrementor = 0, progress: by_two)

incrementor.last #=> 0 #=> 2 #=> 4


  • Check the latest master to make sure the feature hasn't been implemented / the bug hasn't been fixed yet.
  • Check the issue tracker to see if someone has already requested and/or contributed it.
  • Fork the project and submit a pull request from a feature or bugfix branch.
  • Please include tests. This is important so we don't break your changes unintentionally in a future version.
  • Please don't modify the gemspec, Rakefile, version, or changelog. If you do change these files, please isolate a separate commit so we can cherry-pick around it.


Copyright (c) 2012-2014 Matt Sanders. See LICENSE for details.