<center><h1>.Net Thread-safe Random</h1></center>
### Introduction
Random is a widely used function in the programming area, but the C# build-in random is not thread-safe, exceptions might be caused in some use cases,
But peoples are lazy (at least I am), and synchronizing is a little bit too much for some cases.
Thankfully, .Net 6.0 provides a simple method to achieve random with thread safety.
### Random in .Net
Random is a useful function provided by any programming language, and so does .Net, but the random usage is a little different between .Net 6.0 and lower versions, we just focus on .Net 6.0 because I didn't study that in the lower versions ( ̄y▽, ̄)╭ .
In .Net 6, random integers generating can be done easily with Random object:
```csharp
var random = new Random();
var number = random.Next();
Console.WriteLine(number);
```

Oops, too large.
The random range can be set.
```csharp
var random = new Random();
var number = random.Next(0, 100);
Console.WriteLine("Number: " + number);
```

### Random with thread-safety
As we mentioned, above random method is not thread-safe, Random.Shared can be used for thread-safety in .Net 6.0 and higher versions.
```csharp
var number = Random.Shared.Next();
Console.WriteLine("Number: " + number);
```

Also, the random range can be set.
```csharp
var number = Random.Shared.Next(0, 100);
Console.WriteLine("Number: " + number);
```

###### tags: `C#` `.Net` `Random`