Class GoRogueEnhancedRandomExtensions
Class containing some extension methods for ShaiRandom.Generators.IEnhancedRandom instances.
Inherited Members
Namespace: ShaiRandom.Generators
Assembly: GoRogue.dll
Syntax
public static class GoRogueEnhancedRandomExtensions
Methods
View SourcePercentageCheck(IEnhancedRandom, float)
Performs a percentage check that has the specified chance to succeed. The percentage should be in range [0, 100] (inclusive).
Declaration
public static bool PercentageCheck(this IEnhancedRandom rng, float percentage)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| float | percentage | Percentage chance (out of 100) that this check will succeed. Must be in range [0, 100]. |
Returns
| Type | Description |
|---|---|
| bool |
RandomElement(IEnhancedRandom, IReadOnlyArea)
Extension method that selects and returns a random position from the Area, using the rng specified. An exception is thrown if the area is empty.
Declaration
public static Point RandomElement(this IEnhancedRandom rng, IReadOnlyArea area)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IReadOnlyArea | area | The area to select from. Must be non-empty. |
Returns
| Type | Description |
|---|---|
| Point | Item selected. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty Area was provided. |
RandomElement(IEnhancedRandom, IReadOnlyArea, Func<Point, bool>)
Extension method that selects and returns a random position from the given (non-empty) IReadOnlyArea for which the selector function given returns true, using the rng specified. Items are repeatedly selected until a qualifying index is found.
Declaration
public static Point RandomElement(this IEnhancedRandom rng, IReadOnlyArea area, Func<Point, bool> selector)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IReadOnlyArea | area | The area to select from. Must be non-empty. |
| Func<Point, bool> | selector | Function that should return true if the given index is valid selection, false otherwise. |
Returns
| Type | Description |
|---|---|
| Point | Item selected. |
Remarks
This function will never return if no positions in the area return true for the given selector, and could take a very long time to execute if the area is large and the selector returns true for very few of its positions. For a more reliable termination, use the overload taking a maxTries parameter instead: RandomElement(IEnhancedRandom, IReadOnlyArea, Func<Point, bool>, int)
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty Area was provided. |
RandomElement(IEnhancedRandom, IReadOnlyArea, Func<Point, bool>, int)
Extension method that selects and returns a random position from the given (non-empty)
IReadOnlyArea for which the selector function given returns true, using the rng specified.
Items are repeatedly selected until a qualifying index is found, or the specified maxTries
value is reached.
Declaration
public static Point RandomElement(this IEnhancedRandom rng, IReadOnlyArea area, Func<Point, bool> selector, int maxTries)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IReadOnlyArea | area | The area to select from. Must be non-empty. |
| Func<Point, bool> | selector | Function that should return true if the given index is valid selection, false otherwise. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
Returns
| Type | Description |
|---|---|
| Point | Position selected. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty Area was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomElement<T>(IEnhancedRandom, IGridView<T>)
Gets the value at a random position in the IGridView, using the rng given.
Declaration
public static T RandomElement<T>(this IEnhancedRandom rng, IGridView<T> gridView)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
Returns
| Type | Description |
|---|---|
| T | The item at a random position in the IGridView. |
Type Parameters
| Name | Description |
|---|---|
| T |
RandomElement<T>(IEnhancedRandom, IGridView<T>, Func<Point, T, bool>)
Extension method that selects and returns a random item from the given (non-empty) IGridView<T> for which the selector function given returns true, using the rng specified. Items are repeatedly selected until a qualifying value is found.
Declaration
public static T RandomElement<T>(this IEnhancedRandom rng, IGridView<T> gridView, Func<Point, T, bool> selector)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| Func<Point, T, bool> | selector | Function that takes a position, and the value at that position, and returns true if it is an acceptable selection, and false if not. |
Returns
| Type | Description |
|---|---|
| T | The item at the first random position in the IGridView selected for which the selector returns true. |
Type Parameters
| Name | Description |
|---|---|
| T |
Remarks
This function will never return if no positions in the view return true for the given selector, and could take a very long time to execute if the view is large and the selector returns true for very few of its positions. For a more reliable termination, use the overload taking a maxTries parameter instead.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
RandomElement<T>(IEnhancedRandom, IGridView<T>, Func<Point, T, bool>, int)
Extension method that selects and returns a random item from the given (non-empty)
IGridView<T> for which the selector function given returns true, using the rng specified.
Items are repeatedly selected until a qualifying value is found, or the specified maxTries
value is reached.
Declaration
public static T RandomElement<T>(this IEnhancedRandom rng, IGridView<T> gridView, Func<Point, T, bool> selector, int maxTries)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| Func<Point, T, bool> | selector | Function that takes a position, and the value at that position, and returns true if it is an acceptable selection, and false if not. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
Returns
| Type | Description |
|---|---|
| T | The item at the first random position in the IGridView selected for which the selector returns true. |
Type Parameters
| Name | Description |
|---|---|
| T |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomIndex(IEnhancedRandom, IReadOnlyArea)
Extension method that selects and returns a random valid index of a position in a (non-empty) Area.
Declaration
public static int RandomIndex(this IEnhancedRandom rng, IReadOnlyArea area)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IReadOnlyArea | area | The area to select from. Must be non-empty. |
Returns
| Type | Description |
|---|---|
| int | The index selected. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty Area was provided. |
RandomIndex(IEnhancedRandom, IReadOnlyArea, Func<int, bool>)
Extension method that selects and returns a random valid index for some position in the (non-empty) IReadOnlyArea for which the selector function given returns true, using the rng specified. Indices are repeatedly selected until a qualifying index is found.
Declaration
public static int RandomIndex(this IEnhancedRandom rng, IReadOnlyArea area, Func<int, bool> selector)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IReadOnlyArea | area | The area to select from. Must be non-empty. |
| Func<int, bool> | selector | Function that should return true if the given index is valid selection, false otherwise. |
Returns
| Type | Description |
|---|---|
| int | Index selected. |
Remarks
This function will never return if no indices in the area return true for the given selector, and could take a very long time to execute if the area is large and the selector returns true for very few of those indices. For a more reliable termination, use the overload taking a maxTries parameter instead: RandomIndex(IEnhancedRandom, IReadOnlyArea, Func<int, bool>, int)
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty Area was provided. |
RandomIndex(IEnhancedRandom, IReadOnlyArea, Func<int, bool>, int)
Extension method that selects and returns a random valid index for some position in the (non-empty)
IReadOnlyArea for which the selector function given returns true, using the rng specified.
Indices are repeatedly selected until a qualifying index is found, or the specified maxTries
value is reached.
Declaration
public static int RandomIndex(this IEnhancedRandom rng, IReadOnlyArea area, Func<int, bool> selector, int maxTries)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IReadOnlyArea | area | The area to select from. Must be non-empty. |
| Func<int, bool> | selector | Function that should return true if the given index is valid selection, false otherwise. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
Returns
| Type | Description |
|---|---|
| int | Index selected. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty Area was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomPosition(IEnhancedRandom, Rectangle)
Randomly selects a position within the Rectangle.
Declaration
public static Point RandomPosition(this IEnhancedRandom rng, Rectangle rect)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| Rectangle | rect | Rectangle to select a position from. |
Returns
| Type | Description |
|---|---|
| Point | A random position within the Rectangle. |
RandomPosition(IEnhancedRandom, Rectangle, Func<Point, bool>)
Gets a random position in the rectangle, for which the selector returns true. Random positions will continuously be generated until one that qualifies is found.
Declaration
public static Point RandomPosition(this IEnhancedRandom rng, Rectangle rect, Func<Point, bool> selector)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| Rectangle | rect | The Rectangle to select from. |
| Func<Point, bool> | selector | Function that takes a position, and returns true if it is an acceptable selection, and false if not. |
Returns
| Type | Description |
|---|---|
| Point | A random position in the Rectangle for which the selector returns true. |
Remarks
This function will never return if no positions in the rectangle return true for the given selector, and could take a very long time to execute if the rectangle is large and the selector returns true for very few of its positions. For a more reliable termination, use the overload taking a maxTries parameter instead.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty rectangle was given. |
RandomPosition(IEnhancedRandom, Rectangle, Func<Point, bool>, int)
Gets a random position in the rectangle, for which the selector returns true. Random
positions will continuously be generated until one that qualifies is found, or maxTries
selections occur.
Declaration
public static Point RandomPosition(this IEnhancedRandom rng, Rectangle rect, Func<Point, bool> selector, int maxTries)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| Rectangle | rect | The Rectangle to select from. |
| Func<Point, bool> | selector | Function that takes a position, and returns true if it is an acceptable selection, and false if not. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
Returns
| Type | Description |
|---|---|
| Point | A random position in the Rectangle for which the selector returns true. |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty rectangle was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomPosition<T>(IEnhancedRandom, IGridView<T>)
Randomly selects a position within the IGridView.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | Grid view to select a position from. |
Returns
| Type | Description |
|---|---|
| Point | A random position within the IGridView. |
Type Parameters
| Name | Description |
|---|---|
| T |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, HashSet<T>)
Extension method that selects and returns a random position from the given (non-empty) IGridView<T> whose value in that grid view is is one of the ones in the specified hash set. Random positions are repeatedly selected until one that has one of the specified values is found.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, HashSet<T> validValues)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| HashSet<T> | validValues | A set of values to look for in the IGridView to determine whether or not a generated position is valid. |
Returns
| Type | Description |
|---|---|
| Point | A random position whose value in this IGridView is equal to one of the values specified. |
Type Parameters
| Name | Description |
|---|---|
| T |
Remarks
This function will never return if no positions in the view have one of the values given, and could take a very long time to execute if the view is large and very few of its positions have one of the specified values. For a more reliable termination, use the overload taking a maxTries parameter instead.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, HashSet<T>, int)
Extension method that selects and returns a random position from the given (non-empty)
IGridView<T> whose value in that grid view is is one of the ones in the specified hash set.
Positions are repeatedly selected until one that has one of the specified values is found, or the specified maxTries
value is reached.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, HashSet<T> validValues, int maxTries)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| HashSet<T> | validValues | A set of values to look for in the IGridView to determine whether or not a generated position is valid. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
Returns
| Type | Description |
|---|---|
| Point | A random position whose value in this IGridView is equal to one of the values specified. |
Type Parameters
| Name | Description |
|---|---|
| T |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, IEnumerable<T>)
Extension method that selects and returns a random position from the given (non-empty) IGridView<T> whose value in that grid view is is one of the ones specified. Random positions are repeatedly selected until one that has one of the specified values is found.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, IEnumerable<T> validValues)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| IEnumerable<T> | validValues | A set of values to look for in the IGridView to determine whether or not a generated position is valid. |
Returns
| Type | Description |
|---|---|
| Point | A random position whose value in this IGridView is equal to one of the values specified. |
Type Parameters
| Name | Description |
|---|---|
| T |
Remarks
This function will never return if no positions in the view have one of the values given, and could take a very long time to execute if the view is large and very few of its positions have one of the specified values. For a more reliable termination, use the overload taking a maxTries parameter instead.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, IEnumerable<T>, int)
Extension method that selects and returns a random position from the given (non-empty)
IGridView<T> whose value in that grid view is is one of the ones specified.
Positions are repeatedly selected until one that has one of the specified values is found, or the specified maxTries
value is reached.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, IEnumerable<T> validValues, int maxTries)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| IEnumerable<T> | validValues | A set of values to look for in the IGridView to determine whether or not a generated position is valid. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
Returns
| Type | Description |
|---|---|
| Point | A random position whose value in this IGridView is equal to one of the values specified. |
Type Parameters
| Name | Description |
|---|---|
| T |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, Func<Point, T, bool>)
Gets a random position in the grid view, for which the selector returns true. Random positions will continuously be generated until one that qualifies is found.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, Func<Point, T, bool> selector)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| Func<Point, T, bool> | selector | Function that takes a position and the value at that position, and returns true if it is an acceptable selection, and false if not. |
Returns
| Type | Description |
|---|---|
| Point | A random position in the IGridView for which the selector returns true. |
Type Parameters
| Name | Description |
|---|---|
| T |
Remarks
This function will never return if no positions in the view return true for the given selector, and could take a very long time to execute if the view is large and the selector returns true for very few of its positions. For a more reliable termination, use the overload taking a maxTries parameter instead.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was given. |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, Func<Point, T, bool>, int)
Gets a random position in the grid view, for which the selector returns true. Random
positions will continuously be generated until one that qualifies is found, or maxTries
selections occur.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, Func<Point, T, bool> selector, int maxTries)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| Func<Point, T, bool> | selector | Function that takes a position and the value at that position, and returns true if it is an acceptable selection, and false if not. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
Returns
| Type | Description |
|---|---|
| Point | A random position in the IGridView for which the selector returns true. |
Type Parameters
| Name | Description |
|---|---|
| T |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, int, params T[])
Extension method that selects and returns a random position from the given (non-empty)
IGridView<T> whose value in that grid view is is one of the ones specified.
Positions are repeatedly selected until one that has one of the specified values is found, or the specified maxTries
value is reached.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, int maxTries, params T[] validValues)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
| T[] | validValues | A set of values to look for in the IGridView to determine whether or not a generated position is valid. |
Returns
| Type | Description |
|---|---|
| Point | A random position whose value in this IGridView is equal to one of the values specified. |
Type Parameters
| Name | Description |
|---|---|
| T |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, T)
Extension method that selects and returns a random position from the given (non-empty) IGridView<T> whose value in that grid view is the one that is specified. Positions are repeatedly selected until one with the specified value is found.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, T validValue)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| T | validValue | A value to look for in the IGridView to determine whether or not a generated position is valid. |
Returns
| Type | Description |
|---|---|
| Point | A random position whose value in the current IGridView is equal to the one specified. |
Type Parameters
| Name | Description |
|---|---|
| T |
Remarks
This function will never return if no positions in the view have the value given, and could take a very long time to execute if the view is large and very few of its positions have the specified value. For a more reliable termination, use the overload taking a maxTries parameter instead.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, T, int)
Extension method that selects and returns a random position from the given (non-empty)
IGridView<T> whose value in that grid view is the one that is specified.
Positions are repeatedly selected until one with the specified value is found, or the specified maxTries
value is reached.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, T validValue, int maxTries)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| T | validValue | A value to look for in the IGridView to determine whether or not a generated position is valid. |
| int | maxTries | Maximum number of selections to make before giving up and throwing an exception. |
Returns
| Type | Description |
|---|---|
| Point | A random position whose value in the current IGridView is equal to the one specified. |
Type Parameters
| Name | Description |
|---|---|
| T |
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |
| ArgumentOutOfRangeException | A |
| MaxAttemptsReachedException | A value was selected |
RandomPosition<T>(IEnhancedRandom, IGridView<T>, params T[])
Extension method that selects and returns a random position from the given (non-empty) IGridView<T> whose value in that grid view is is one of the ones specified. Random positions are repeatedly selected until one that has one of the specified values is found.
Declaration
public static Point RandomPosition<T>(this IEnhancedRandom rng, IGridView<T> gridView, params T[] validValues)
Parameters
| Type | Name | Description |
|---|---|---|
| IEnhancedRandom | rng | |
| IGridView<T> | gridView | The grid view to select from. |
| T[] | validValues | A set of values to look for in the IGridView to determine whether or not a generated position is valid. |
Returns
| Type | Description |
|---|---|
| Point | A random position whose value in this IGridView is equal to one of the values specified. |
Type Parameters
| Name | Description |
|---|---|
| T |
Remarks
This function will never return if no positions in the view have one of the values given, and could take a very long time to execute if the view is large and very few of its positions have one of the specified values. For a more reliable termination, use the overload taking a maxTries parameter instead.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | An empty grid view was provided. |