<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); ``` ![](https://i.imgur.com/1IwA0ey.png) Oops, too large. The random range can be set. ```csharp var random = new Random(); var number = random.Next(0, 100); Console.WriteLine("Number: " + number); ``` ![](https://i.imgur.com/ZyXqLah.png) ### 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); ``` ![](https://i.imgur.com/uFL44PM.png) Also, the random range can be set. ```csharp var number = Random.Shared.Next(0, 100); Console.WriteLine("Number: " + number); ``` ![](https://i.imgur.com/861qA3d.png) ###### tags: `C#` `.Net` `Random`