mirror of
https://github.com/Floriansylvain/FDJ-SLAYER.git
synced 2026-08-19 11:43:21 +02:00
121 lines
4.7 KiB
Markdown
121 lines
4.7 KiB
Markdown
# FDJ SLAYER
|
|
|
|
A Python application that generates random EuroMillions lottery draws using multiple entropy sources to maximize randomness.
|
|
|
|
## Description
|
|
|
|
This project aims to create truly random EuroMillions lottery draws by combining various entropy sources including hardware information, weather data, system metrics, and cryptographic functions. It generates a configurable number of draws and allows users to view them.
|
|
|
|
## Features
|
|
|
|
- Multiple entropy sources for good randomness:
|
|
- Weather data from [OpenMeteo API](https://open-meteo.com/)
|
|
- Hardware and system information
|
|
- OS random data and cryptographic functions
|
|
- CPU/memory usage and other dynamic metrics
|
|
- Fully configurable lottery draws
|
|
- Statistical analysis of generated draws:
|
|
- Chi-square testing for randomness verification
|
|
- Frequency distribution analysis of numbers and stars
|
|
- Calculation of standard deviation and variation percentages
|
|
- P-value assessment of randomness quality
|
|
- Visualization capabilities:
|
|
- Bar charts showing number/star distributions
|
|
- Comparison with expected frequencies
|
|
- Interactive display of statistical results
|
|
|
|
## Installation
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/Floriansylvain/FDJ-SLAYER.git
|
|
cd FDJ-SLAYER
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Usage
|
|
|
|
Run the main script to generate lottery draws:
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
The program will:
|
|
|
|
1. Generate the configured number of random draws
|
|
2. Display a randomly selected draw as the final result
|
|
3. Allow you to view additional draws on request
|
|
|
|
## How It Works
|
|
|
|
The application uses a combination of entropy sources to generate truly random lottery draws:
|
|
|
|
1. **Static Entropy Sources**:
|
|
- OS random data
|
|
- Hardware identifiers
|
|
- System configuration
|
|
- Weather data from geographically random locations
|
|
|
|
2. **Dynamic Entropy Sources**:
|
|
- Current timestamp
|
|
- CPU and memory usage
|
|
- Process and thread information
|
|
- Network statistics
|
|
|
|
All sources are combined, hashed, and processed to create seeds for the random number generator that selects the lottery numbers.
|
|
|
|
## Testing
|
|
|
|
Unit tests are included to verify the functionality of all major components.
|
|
|
|
### Running Tests
|
|
|
|
Run the test suite with pytest:
|
|
|
|
```bash
|
|
python -m pytest test/
|
|
```
|
|
|
|
For a coverage report:
|
|
|
|
```bash
|
|
python -m pytest --cov-report term --cov=./fdj_slayer test/
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Edit the constants in ``src/constants.py`` to modify:
|
|
|
|
| Parameter | Description |
|
|
|------------------------|-------------------------------------------------------|
|
|
| `NUMBER_OF_DRAWS` | Number of draws to generate |
|
|
| `NUMBER_OF_NUMBERS` | Number of main numbers in a draw (5 for EuroMillions) |
|
|
| `MAX_NUMBER` | Maximum main number value (50 for EuroMillions) |
|
|
| `NUMBER_OF_STARS` | Number of star numbers in a draw (2 for EuroMillions) |
|
|
| `MAX_STAR` | Maximum star number value (12 for EuroMillions) |
|
|
| Weather API parameters | Configuration for the OpenMeteo API |
|
|
|
|
## Dependencies
|
|
|
|
| Package | Purpose |
|
|
|--------------------------------------------------------------------|----------------------------------|
|
|
| [openmeteo_requests](https://pypi.org/project/openmeteo-requests/) | Weather data retrieval |
|
|
| [progress](https://pypi.org/project/progress/) | Progress bar visualization |
|
|
| [psutil](https://pypi.org/project/psutil/) | System metrics collection |
|
|
| [requests-cache](https://pypi.org/project/requests-cache/) | Caching API requests |
|
|
| [numpy](https://pypi.org/project/numpy/) | `ValuesAsNumpy()` on API results |
|
|
| [retry-requests](https://pypi.org/project/retry-requests/) | Retry failed API requests |
|
|
| [pytest](https://pypi.org/project/pytest/) | Unit testing framework |
|
|
| [pytest-cov](https://pypi.org/project/pytest-cov/) | Test coverage reporting |
|
|
| [pytest-mock](https://pypi.org/project/pytest-mock/) | Mocking for tests |
|
|
| [matplotlib](https://pypi.org/project/matplotlib/) | Data visualization |
|
|
| [scipy](https://pypi.org/project/scipy/) | Statistical calculations |
|
|
|
|
## License
|
|
|
|
[FDJ-SLAYER](https://github.com/Floriansylvain/FDJ-SLAYER) © 2025 by [Florian Sylvain](https://github.com/Floriansylvain) is licensed under [Creative Commons Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/).
|