If you like to create random data for a dataset or are getting into artificial intelligence / machine learning or AI/ML, this article can be a starting point. At some point, you may want to generate your own dataset from random data, or just generate a lot of random data for learning.

- What is Randomness?
- Random Number Generators
- How to generate random numbers (integers)
- How to randomly pick a list of integers
- How to randomly shuffle the list of integers
- How to generate random floats
- How to generate random floating point numbers
- Shuffling a list of strings
- How to generate random strings
- string module ascii_letters and digits
- What other functions are there in random?
- Can I use the random module for security or cryptographic purposes?

## What is Randomness?

In this blog post, we will create random data. Randomness is found in everywhere, especially in machine learning. Cryptography is another area that uses randomness, in relation to ciphertext. Other areas using randomness are computer simulation, randomized design, slot machines and statistical sampling. A random process is a deterministic or indeterministic process for which what we do not know is greater than what we know. This delves into the Heisenberg's Uncertainty Principle, which is a fundamental concept in quantum physics.

## Random Number Generators

Random number generation is a process by which a random number generator (RNG) a sequence of numbers or characters that cannot be predicted is generated. We will look into Python's built-in `random`

module, which implements pseudo-random number generators (as opposed to truly random RNGs). Internally, the system time is used for randomness. This can be changed.

## How to generate random numbers (integers)

To generate a random integer from a sequential list of numbers, we can use `random.randint()`

.

If we want to generate a random integer between and including 3 and 10, we call `randint()`

.

`random.randint(3,10)`

translates to picking a random integer from this list of integers:

`3, 4, 5, 6, 7, 8, 9, 10`

```
import random
num = random.randint(3, 10)
print(num)
```

OUTPUT:

```
7
```

Your output can vary, because it is.. well, random.

To generate a random number from a range of integers, we use `random.randrange()`

. If we want to generate a random integer in this range

`range(1, 100, 7)`

, which evaluates to this array of integers:

`[1, 8, 15, 22, 29, 36, 43, 50, 57, 64, 71, 78, 85, 92, 99]`

This is how we call `random.randrange()`

:

```
import random
num = random.randrange(1, 100, 7)
print(num)
```

OUTPUT:

```
64
```

It picked 64, which is in the whitelisted array of ints.

## How to randomly pick a list of integers

Suppose we want to pick a list of 15 random numbers from 1 through 100. We can combine it with list comprehension.

```
import random
nums = [random.randint(1,100) for _ in range(15)]
print(nums)
```

OUTPUT:

```
[23, 62, 75, 56, 33, 29, 81, 55, 23, 45, 23, 6, 61, 86, 41]
```

## How to randomly shuffle the list of integers

Let us randomly rearrange or shuffle the list of integers `nums`

. For that, we will use `random.shuffle()`

.

```
random.shuffle(nums)
print(nums)
```

The `shuffle()`

method does not return anything. It shuffles all the items in `nums`

in-place. So, when you print the value of `nums`

, you get a new order of the existing items.

OUTPUT:

```
[64, 6, 23, 7, 31, 33, 58, 96, 59, 93, 21, 45, 94, 84, 3]
```

## How to generate random floats

To generate a random float from a sequential list of numbers, we can use `random.uniform()`

. This is very similar to `random.randint()`

.

If we want to generate a random float between and including 3 and 10, we call `random.uniform(3,10)`

:

```
import random
num = random.uniform(3, 10)
print(num)
```

OUTPUT:

```
3.3796273150953624
```

Your output can vary.

## How to generate random floating point numbers

A floating point number is a number from 0.0 through 1.0. To generate a floating point number, we can use `random.random()`

.

Let us generate and print 10 floating point numbers:

```
for _ in range(10):
print(random.random())
```

OUTPUT:

```
0.16632288767537307
0.08202768857292786
0.08440485875689951
0.8394101116811752
0.6308685727717279
0.8518261525901913
0.3730988062970587
0.9057751046018332
0.5844411212476546
0.5590689948576777
```

## Shuffling a list of strings

Let us shuffle a list of strings. We will use the list `fruits`

which contains `['apples', 'banana', 'oranges', 'pears']`

```
fruits = ['apples', 'banana', 'oranges', 'pears']
print(fruits)
random.shuffle(fruits)
print(fruits)
```

OUTPUT:

```
['apples', 'banana', 'oranges', 'pears']
['pears', 'oranges', 'banana', 'apples']
```

## How to generate random strings

To generate random strings from a list of characters, we will use `random.sample()`

. This takes two parameters - the first is a string with all permissible characters, and the second is the length of the resultant list. We will combine all items in the list using `join()`

.

Let us create a 5-character password that consists of a combination of the following letters and numbers:

`a, b, c, d, e, f, 4, 5, 6, 7, 8`

```
password = ''.join(random.sample('abcdef45678', 5))
print(password)
```

OUTPUT:

```
e7648
```

## string module ascii_letters and digits

If you want to use all the letters of the alphabet, lowercase and uppercase, you can import `string`

and use `string.ascii_letters`

and `string.digits`

.

`string.ascii_letters`

evaluates to `'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'`

`string.digits`

evalutes to `'0123456789'`

## What other functions are there in random?

To find a comprehensive list of functions in `random`

, run this on the Python shell.

```
help(random)
```

You will see a list of all functions available in the `random`

module, along with description of each.

## Can I use the random module for security or cryptographic purposes?

No. The pseudo-random generators of the `random`

module are meant for modeling and simulation. For generating cryptographically strong and random numbers to be used as passwords, account authentication, security tokens, etc, we should use the `secret`

module.

You can read more about the `secret`

module here.

## Related Posts

If you have any questions, please contact me at arulbOsutkNiqlzziyties@gNqmaizl.bkcom. You can also post questions in our Facebook group. Thank you.