RandomExtensionsNextDouble(Random, Double, FloatScale) Method

Returns a non-negative random Double value that is less or equal to the specified maxValue.


Namespace: KGySoft.CoreLibraries
Assembly: KGySoft.CoreLibraries (in KGySoft.CoreLibraries.dll) Version: 7.0.0-rc.1
public static double NextDouble(
	this Random random,
	double maxValue,
	FloatScale scale = FloatScale.Auto


random  Random
The Random instance to use.
maxValue  Double
The upper bound of the random number returned.
scale  FloatScale  (Optional)
The scale to use to generate the random number. This parameter is optional.
Default value: Auto.

Return Value

A double-precision floating point number that is greater than or equal to 0.0 and less or equal to maxValue.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type Random. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).


In most cases return value is less than maxValue. Return value can be equal to maxValue in very edge cases. With ForceLinear scale the result will be always less than maxValue.

If scale is Auto, then the ForceLinear option is used if maxValue is less than or equal to 65535. For larger range the ForceLogarithmic option is used.

Generating random numbers by this method on the logarithmic scale is about 3 times slower than on the linear scale.


ArgumentNullExceptionrandom is .
ArgumentOutOfRangeExceptionmaxValue is less than 0.0
scale is not a valid value of FloatScale.

See Also