creating own RANDOM number generator
Tags: python, codenewbie, coding, programming
Published: 2023-06-20 05:00:00

### Introduction:
Have you ever wondered how the random number module works in programming? I was curious about it myself, so I embarked on a journey to create a random number generator using time, different time zones, milliseconds, and some mathematical techniques. In this article, we'll explore the inner workings of randomness and build our own time-based random number generator.

### Understanding Randomness:
Randomness is a fundamental concept in computer science and statistics. It allows us to introduce unpredictability into our programs and simulations. Most programming languages provide built-in random number generators that are based on various algorithms. However, we'll take a different approach by leveraging time and time zones to create our own random number generator.

### Setting Up the Environment:
To follow along, clone the GitHub repository containing the code for our time-based random number generator: [GitHub Repository](https://github.com/coderatul/random-num-using-time). This repository includes a Python script that utilizes the `datetime` module to generate random numbers.

### Working with Time Zones:
Time zones play a crucial role in our random number generator. By considering different time zones, we introduce additional complexity and increase the randomness of our generated numbers. The script in the repository Utilizes `pytz` module for a list of time zones from which we can choose. Experimenting with different time zones will yield varied and unique results.

### Utilizing Milliseconds:
To add an extra layer of randomness, we will incorporate milliseconds into our calculations. The `datetime` module in Python allows us to obtain the current time, including milliseconds. By using this information, we can further enhance the randomness of our generated numbers.

### Mathematical Manipulation:
Once we have the current time and milliseconds, we can perform mathematical operations on them to generate random numbers. By combining addition, multiplication, and modulo operations, we can create a formula that produces a diverse range of random outputs.

### Finalizing the Random Number Generator:
The script in the GitHub repository demonstrates how to implement the time-based random number generator. It utilizes a simple algorithm that combines various factors such as time zones, milliseconds, and mathematical manipulation. Feel free to experiment with the code, adjust the formula, and add your own enhancements to suit your needs.

```
import datetime
import pytz  # Required library for time zone support

def randomnum(time_zone):
    # Getting the current time in the specified time zone
    time_now = datetime.datetime.now(pytz.timezone(time_zone))
    
    # Getting time in terms of microseconds
    random_seed = time_now.microsecond
    
    # An equation which returns a number between 0 and 10
    seed = random_seed * 8 % 11
    
    # Making random number somewhat unpredictable
    random_micro_secs = []
    for i in range(seed):
        random_micro_secs.append(time_now.second**seed)
    
    seed_2 = sum(random_micro_secs)
    
    # Generating the final random number
    truly_random_num = (seed_2 * 8 % 11)
    
    return truly_random_num

# Example usage
time_zone = 'America/New_York'  # Specify the desired time zone
random_number = randomnum(time_zone)
print(random_number)

```
### above block of code can generate random numbers between 0 to 10 only !!!

### Conclusion:
Understanding how random number generators work is a fascinating endeavor. In this article, we explored the concept of randomness and created a time-based random number generator using time, different time zones, milliseconds, and mathematical manipulation. By leveraging the `datetime` module in Python, we harnessed the power of time to generate unique and unpredictable random numbers.

Remember, while this time-based approach can be a fun and educational exercise, it is not suitable for security-critical applications where true randomness is required. Cryptographically secure random number generators, backed by strong algorithms, are essential for such scenarios. Nonetheless, exploring alternative methods of generating random numbers can expand our understanding of the underlying principles and spur creativity in our coding endeavors.

I encourage you to delve into the code provided in the GitHub repository, modify it to your liking, and discover the nuances of randomness. Happy coding and may your endeavors be filled with intriguing and unpredictable outcomes!