{"action":"opened","issue":{"url":"https://api.github.com/repos/Hipparchus-Math/hipparchus/issues/8","repository_url":"https://api.github.com/repos/Hipparchus-Math/hipparchus","labels_url":"https://api.github.com/repos/Hipparchus-Math/hipparchus/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/Hipparchus-Math/hipparchus/issues/8/comments","events_url":"https://api.github.com/repos/Hipparchus-Math/hipparchus/issues/8/events","html_url":"https://github.com/Hipparchus-Math/hipparchus/issues/8","id":171080313,"number":8,"title":"Add implementation of RANDOM streaming percentile algorithm","user":{"login":"psteitz","id":1479914,"avatar_url":"https://avatars.githubusercontent.com/u/1479914?v=3","gravatar_id":"","url":"https://api.github.com/users/psteitz","html_url":"https://github.com/psteitz","followers_url":"https://api.github.com/users/psteitz/followers","following_url":"https://api.github.com/users/psteitz/following{/other_user}","gists_url":"https://api.github.com/users/psteitz/gists{/gist_id}","starred_url":"https://api.github.com/users/psteitz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/psteitz/subscriptions","organizations_url":"https://api.github.com/users/psteitz/orgs","repos_url":"https://api.github.com/users/psteitz/repos","events_url":"https://api.github.com/users/psteitz/events{/privacy}","received_events_url":"https://api.github.com/users/psteitz/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-08-14T21:37:32Z","updated_at":"2016-08-14T21:37:32Z","closed_at":null,"body":"The [RANDOM](http://dimacs.rutgers.edu/~graham/pubs/papers/nquantiles.pdf) algorithm makes a nice complement to PSquarePercentile for streaming percentiles.  While it does not have a uniformly fixed bound on storage, storage is bounded for fixed quantile estimation error and grows very slowly with increases in precision.   It also allows any quantile to be estimated based on the data it stores, so e.g. getResult(quantile) or even getResult(quantile[]) methods are possible.  Finally, aggregation is straightforward."}}
{"actor":{"display_login":"psteitz"}}