Skip to main content

A random number generator based on shuffled English words, their ASCII values, and the current epoch time to create highly randomized outputs

Project description

random_algorithm

A very simple yet original random algo made while overthinking about randomness PyPI - Version PyPI - Downloads Pepy Total Downlods

random_algorithm is a Python library that generates random numbers using a novel approach based on English words and the current epoch time. It utilizes ASCII values of shuffled words, reduces them to single digits, and combines these digits to generate a random number of a specified size. This implementation attempts to get as close as possible to true randomness by using time-based factors and word shuffling.

Features

  • Generates random numbers based on shuffled English words.
  • ASCII values of each word are reduced to single digits.
  • Supports dynamic generation of random numbers of any specified size.
  • Includes special logic to generate lower numbers (like 0 or 1), which can sometimes be difficult to produce with traditional randomization methods.
  • Provides functions to extract seeds based on time and to reduce any number to a single digit.

Usage

Install the package in your repo

pip install random_algorithm

If you use a requirements file, add this line to it :

random_algorithm==1.1.0

You can import and use the library in your Python code like this :

from random_algorithm import gen_random

Example :

Generate a random number with a desired size of 5 digits

random_number = gen_random(desired_size=5)
print(f"Generated random number : {random_number}")

You can also use the following internal functions :

  • ascii_reduce(word, index) :
    • Takes a word (ex "github") and an index (can be any positive number) as input.
    • Reduces the word to a single digit (returns an int).
  • reduce_to_single_digit(n) :
    • Reduces any integer n to a single digit by summing its digits repeatedly until one digit remains.
    • For example, reduce_to_single_digit(9875) would return 2.
  • get_time_seed() :
    • Generates a seed based on the current time and ASCII reduction of character permutations.

Handling errors

gen_random() will raise the following exceptions if invalid inputs are provided :

  • TypeError : Raised when desired_size is not an integer.
  • ValueError : Raised when desired_size is less than 1.

[!WARNING]
The code works fine but isn't the most optimized ever.
Generating huge numbers will take a lot of time ! I you really need a big random number, call the function multiple times with low numbers (ex 1 or 2) and concatenate the results

How it works

  1. Word shuffling : The words from wordlist.txt are shuffled on each call to ensure randomness.
  2. Random index : The current epoch time is used to generate a random index into the shuffled word list.
  3. ASCII reduction : Each word's ASCII values are reduced to single digits and then summed to produce a random number.
  4. Low numbers handling : A special condition ensures that numbers like 0 and 1 can be generated using the current epoch time modulo operations.
    1. Time Seed: get_time_seed() creates a seed value based on permutations of characters from the current time.

Contributing

Feel free to open an issue or a pull request if you want to contribute to this project

How to build ?

py -m pip install --upgrade pip build twine setuptools wheel
py -m build
py -m twine check dist/*
# Optional : publish to test.pypi.org
py -m twine upload --repository testpypi dist/*
# Or to pypi.org
py -m twine upload dist/*

License

This project is licensed under the MIT License - see the LICENSE file for details.
The wordlist comes from from https://github.com/dwyl/english-words.

Authors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

random_algorithm-1.1.0.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

random_algorithm-1.1.0-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file random_algorithm-1.1.0.tar.gz.

File metadata

  • Download URL: random_algorithm-1.1.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for random_algorithm-1.1.0.tar.gz
Algorithm Hash digest
SHA256 fe0de2db16d4b00c4d10e234bb014c7aaf5a9995743ce664d95634fc33a077c7
MD5 11e5f915e44b206dc723f75d12f748ce
BLAKE2b-256 2d1f4e6c5ef4c9c2d0e4cc8830f9f73796d9c1d70d9188b6ef75d3b9eccf9f19

See more details on using hashes here.

File details

Details for the file random_algorithm-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for random_algorithm-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 18c17ae395ae5ca0f075637676e08bc8d885ac9d24ba3783f1f8df1be90b9b46
MD5 acb34027731a8d02c5a56d0d9db92aee
BLAKE2b-256 997c6fd1c0326e1f709514e66f463c03f3cb2b6e6c800009b81e5e8bdb8f608f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page