Book Image

The Modern C# Challenge

By : Rod Stephens
Book Image

The Modern C# Challenge

By: Rod Stephens

Overview of this book

C# is a multi-paradigm programming language. The Modern C# Challenge covers with aspects of the .NET Framework such as the Task Parallel Library (TPL) and CryptoAPI. It also encourages you to explore important programming trade-offs such as time versus space or simplicity. There may be many ways to solve a problem and there is often no single right way, but some solutions are definitely better than others. This book has combined these solutions to help you solve real-world problems with C#. In addition to describing programming trade-offs, The Modern C# Challenge will help you build a useful toolkit of techniques such as value caching, statistical analysis, and geometric algorithms. By the end of this book, you will have walked through challenges in C# and explored the .NET Framework in order to develop program logic for real-world applications.
Table of Contents (17 chapters)
Title Page
Copyright and Credits
Dedication
Packt Upsell
Contributors
Preface
Free Chapter
1
Mathematics
3
Dates and Times
4
Randomization
6
Files and Directories
7
Advanced C# and .NET Features
Index

Solutions


 You can download the example solutions to see additional details and to experiment with the programs at https://github.com/PacktPublishing/The-Modern-CSharp-Challenge/tree/master/Chapter04.

49. Random doubles

The following NextDouble extension method uses the Random class's existing NextDouble method to generate a double value within a range:

public static class RandomExtensions
{
    // A Random objects shared by all extensions.
    private static Random Rand = new Random();

    // Return a double between minValue and maxValue.
    public static double NextDouble(this Random rand,
        double minValue, double maxValue)
    {
        return minValue + Rand.NextDouble() * (maxValue - minValue);
    }
}

The RandomExtensions class creates a Random object at the class level. That object is static, so it is available to all extension methods defined in this class.

Note

If you create a new Random object without passing its constructor a seed value, the class uses the system's time to...