{"id":13713836,"url":"https://github.com/chriseaton/gopractrand","last_synced_at":"2026-05-19T01:34:09.346Z","repository":{"id":97906478,"uuid":"427838938","full_name":"chriseaton/gopractrand","owner":"chriseaton","description":"A library that provides and tests random-number-generators (RNG) and random-data testing tools written in Go, powered by the public-domain PractRand testing suite (C++). ","archived":false,"fork":false,"pushed_at":"2021-11-21T07:31:49.000Z","size":1832,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T00:34:20.298Z","etag":null,"topics":["go","golang","golang-library","practrand","random","random-number-generators","random-testing","rng"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chriseaton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-14T04:43:22.000Z","updated_at":"2021-11-21T07:31:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"ec8e3319-37fd-4347-97a6-68fda0537b7f","html_url":"https://github.com/chriseaton/gopractrand","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/chriseaton%2Fgopractrand","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriseaton%2Fgopractrand/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriseaton%2Fgopractrand/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriseaton%2Fgopractrand/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chriseaton","download_url":"https://codeload.github.com/chriseaton/gopractrand/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243713391,"owners_count":20335566,"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":["go","golang","golang-library","practrand","random","random-number-generators","random-testing","rng"],"created_at":"2024-08-02T23:01:45.705Z","updated_at":"2026-05-19T01:34:09.275Z","avatar_url":"https://github.com/chriseaton.png","language":"C++","funding_links":[],"categories":["Repositories"],"sub_categories":[],"readme":"# GoPractRand\nThis library provides a Go(lang) API wrapper to the well-established and public domain PractRand library which can be used for testing random number generators and randomized datasets.\n\nThe primary goal is to provide stable Go-accessible APIs to all tests and random number generators (RNGs) provided in PractRand with minimal modification to the original source library code.\n\nIn addition, the main package will provide access to a Test Manager and command-line interface.\n\n## OS Support\nCurrently this library has only been tested on CentOS 8 Linux, but I suspect it will likely work on other distros without issue. \n\n\u003e Had success compiling on other distro's or operating systems? Drop me a message and let me know, or submit a PR if you had to make adjustments.\n\nWindows support will come in a future release.\n\nMac support will need to be provided via PR if someone would like to contribute.\n\n# Building\nTo utilize this Go package you will need to build and install the PractRand library provided in this repository.\n\nA `Makefile` is provided to facilitate the build and install process in the `practrand/` directory.\n\n```\ncd practrand\nmake\nsudo make install\n```\n\nThis will build and install the `libpractrand.so` shared library and `rng_test`, `rng_benchmark`, `rng_output` command-line tools system-wide.\n\n# Running\nTo run one of the go library files directly using the built practrand library, run:\n```sh\ngo run main.go \n```\n# Goals for v-0.1.0\nComplete buildable generated APIs for all RNGs:\n- [x] arbee\n- [x] chacha\n- [ ] efiix8x384\n- [x] efiix8x48\n- [ ] efiix16x384\n- [x] efiix16x48\n- [ ] efiix32x384\n- [x] efiix32x48\n- [ ] efiix64x384\n- [x] efiix64x48\n- [ ] hc256\n- [ ] isaac32x256\n- [ ] isaac64x256\n- [ ] jsf32\n- [ ] jsf64\n- [ ] mt19937\n- [ ] rarns16\n- [ ] rarns32\n- [ ] rarns64\n- [x] salsa\n- [ ] sfc16\n- [ ] sfc32\n- [ ] sfc64\n- [ ] sha2_based_pool\n- [ ] trivium\n- [ ] xsm32\n- [ ] xsm64\n\n## Future Goals\n- Test Manager struct to facilitate testing samples.\n- Test Manager CLI.\n- Complete buildable generated APIs for all Tests:\n    - [ ] BCFN\n    - [ ] BCFN_MT\n    - [ ] Birthday\n    - [ ] BRank\n    - [ ] coup16\n    - [ ] CoupGap\n    - [ ] DistC6\n    - [ ] DistFreq4\n    - [ ] FPF\n    - [ ] FPMulti\n    - [ ] Gap16\n    - [ ] mod3\n    - [ ] NearSeq\n    - [ ] Pat5\n    - [ ] transforms\n\n# Developing\nThis package is built with Go unit tests in all packages. Run `go test` to run the tests in hhe current package directory.\n\n## Go Wrapper\nThe Go wrapper for PractRand is provided through a [swig](http://www.swig.org/) generated layer. If you would like to regenerate the Go wrapper code from the library, run the `regenerate.sh` script.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchriseaton%2Fgopractrand","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchriseaton%2Fgopractrand","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchriseaton%2Fgopractrand/lists"}