Metadata-Version: 2.1
Name: randalyze
Version: 0.1.2
Summary: Create series of random numbers fitting a specified distribution, and then analyze them.
License: Apache-2.0
Author: Jason Ross (big-jr)
Author-email: jason@softwarepragmatism.com
Requires-Python: >=3.8,<4.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Description-Content-Type: text/markdown

# Randalyze - Random Number Generator And Analyzer

## What Does Randalyze Do?

Randalyze is a Python module that you can import or use directly from the command line to generate a set of random numbers. These numbers will fit a specified distribution, rather than just being evenly distributed.

It also allows you to analyze a set of numbers, to see which distribution they match.

## Installation

Randalyze supports Python 3.8 and later, so you can install it on Windows 7 if you want. It doesn't support Python 2.7.

To install Randalyze, create a virtual environment and use `pip`:

```bash
pip install randalyze
```

## Usage

### Command Line Usage

#### Generating Random Numbers

The `generate` command creates a number of random numbers. The type of generator must be specified - currently the only option is `benford`, and the number (or count) of numbers generated is specified with the `-c` option.

For example, to generate 100 random numbers with a Benford distribution, the following command line can be used:

```bash
randalyze generate -c 100 benford
```

or, if you're not using an active virtual environment:

```bash
python -m randalyze generate -c 100 benford
```

For detailled parameter descriptions, use:

```bash
randalyze --help
randalyze generate --help
```

#### Analyzing Numbers

If you have a set of numbers, `randalyze` can analyze them and tell you how close to a Benford distribution they are. These numbers may have been generated by `randalyze`, or maybe obtained from somewhere else - it really doesn't matter.

So, to analyze an output of 10,000 numbers from the `randalyze generate` command, and see whether it matches a Benford distribution to within 10%, use:

```bash
randalyze generate benford -c 10000 | randalyze analyze -t 10 benford
```

And to ensure the numbers in a text file `numbers.txt`, with one number per line, fit a Benford distribution:

```bash
cat numbers.txt | randalyze analyze -t 10 benford
```

or use the `FILE` parameter:

```bash
randalyze analyze -t 10 benford numbers.txt
```

And to produce the output in JSON format:

```bash
randalyze analyze -t 10 --format json benford numbers.txt
```

#### Self Testing

You can use `randalyze` to analyze the numbers it creates by piping the output of the `generate` command into the `analyze` command. For example, to check whether 10,000 generated numbers are wihin 10% of a Benford distribution, use:

```bash
randalyze generate benford -c 10000 | randalyze analyze -t 10 benford
```

