{"id":13827778,"url":"https://github.com/elsehow/aaronson-oracle","last_synced_at":"2025-04-09T05:12:44.002Z","repository":{"id":53347420,"uuid":"60240186","full_name":"elsehow/aaronson-oracle","owner":"elsehow","description":"Press the 'f' and 'd' keys randomly. It's easy. Just use your \"free will.\"","archived":false,"fork":false,"pushed_at":"2018-11-08T04:22:34.000Z","size":233,"stargazers_count":827,"open_issues_count":6,"forks_count":30,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-02T04:05:24.237Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://people.ischool.berkeley.edu/~nick/aaronson-oracle/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elsehow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-02T06:59:39.000Z","updated_at":"2025-03-28T13:17:31.000Z","dependencies_parsed_at":"2022-09-11T04:31:15.760Z","dependency_job_id":null,"html_url":"https://github.com/elsehow/aaronson-oracle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsehow%2Faaronson-oracle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsehow%2Faaronson-oracle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsehow%2Faaronson-oracle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elsehow%2Faaronson-oracle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elsehow","download_url":"https://codeload.github.com/elsehow/aaronson-oracle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247980844,"owners_count":21027808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T09:02:08.708Z","updated_at":"2025-04-09T05:12:43.986Z","avatar_url":"https://github.com/elsehow.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# aaronson-oracle\n\n\u003e In a class I taught at Berkeley, I did an experiment where I wrote a simple little program that would let people type either “f” or “d” and would predict which key they were going to push next. It’s actually very easy to write a program that will make the right prediction about 70% of the time. Most people don’t really know how to type randomly. They’ll have too many alternations and so on. There will be all sorts of patterns, so you just have to build some sort of probabilistic model. Even a very crude one will do well. I couldn’t even beat my own program, knowing exactly how it worked. I challenged people to try this and the program was getting between 70% and 80% prediction rates. Then, we found one student that the program predicted exactly 50% of the time. We asked him what his secret was and he responded that he “just used his free will.”\n\n\\- Scott Aaronson, *Quantum Computing Since Democritus*.\n\nCan you use your \"free will\"? [Try your hand](http://people.ischool.berkeley.edu/~nick/aaronson-oracle).\n\n## how does it work?\n\nI asked Scott if he remembered what he did, and he said,\n\n\u003e As it happens, I do remember!  All the basic program did was to examine all 32 possible 5-grams (sequences of five f's and d's), and see which 5-grams were more likely to be followed by f or by d in the user's previous keypresses, and then use that to generate a prediction based on the most recent 5-gram.  There might have been various enhancements on top of that -- e.g., if you're not taking enough data for 5-grams to be useful, then you can also look at 4-grams and 3-grams, and you can also \"seed\" the predictor with 5-gram data from the previous users (hoping that the next user will be pretty similar).\n\nThis repo implements the no-enhancements version.\n\n## testimonials\n\n\u003e OMG I'm a caged bird! A caged bird with clipped wings!!!!!\n\n\\- My dad\n\n\u003e this is art\n\n\\- Noura Howell\n\nScott himself referenced this oracle at the end of his [reply to Roger Penrose](http://www.scottaaronson.com/blog/?p=2756)\n\n## verifying the trickery\n\nNo tricks up my sleeve, I tested it with a PRNG. And you can too - just clone this repository and\n\n```\nnpm install; npm test\n```\n\n## developing\n\n```\nnpm install\nnpm run build\n```\n\nnow open index.html\n\nto build continuously (e.g. while editing\n\n`npm run watch`\n\n## license\n\nBSD\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felsehow%2Faaronson-oracle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felsehow%2Faaronson-oracle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felsehow%2Faaronson-oracle/lists"}