class RandomSelector extends NumberSelector
Get a pseudorandom number from a pool of numbers.
The contained logic is similar to RandomSequenceSelector
.
It is not reliant of a shrinking pool that composes into some sequence of all the numbers, however;
the numbers are re-introduced to the selection as long as the pool is used.
This allows for the sequence to contain repeat numbers far before ever visiting all of the numbers once.
During the selection process:
The index is the position from where the selection begins, and the end of the Array
is where the selection ends.
Once a position between those two indices is selected, that number is extracted.
The number at the start position is swapped into the position where the selection number was extracted.
The start position is then set to an invalid number, and the start index is advanced.
Repeat next request.
During the return process:
The returned number is added to the input Array
at the position just before the current selection position.
The selection index is then reversedback to re-include the returned number.
The normal return index is not used in this algorithm.
- Source
- RandomSelector.scala
- See also
RandomSequenceSelector
- Alphabetic
- By Inheritance
- RandomSelector
- NumberSelector
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new RandomSelector()
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def Format(ary: Array[Int]): Unit
Accept the indexing pool from which numbers are selected and returned.
Accept the indexing pool from which numbers are selected and returned. Correct its format to suit the current
NumberSelector
algorithms.
Moving all of the invalid negative-ones (-1) to the left of the current valid indices works for most selectors. TheselectionIndex
is set to the first valid number available from the left. Theret
index is set to index zero.- ary
the
Array
ofInt
numbers
- Definition Classes
- NumberSelector
- def Get(ary: Array[Int]): Int
Accept a provided
pool
and select the next number.
...Accept a provided
pool
and select the next number.
...- ary
the
Array
ofInt
numbers from which to draw a new number- returns
an
Int
number
- Definition Classes
- RandomSelector → NumberSelector
- def Return(number: Int, ary: Array[Int]): Boolean
Give a number back to a specific collection following the principles of this selector.
The number is always returned to a "used" index position near the front of the array.Give a number back to a specific collection following the principles of this selector.
The number is always returned to a "used" index position near the front of the array. It locates this position by incrementally traversing theArray
behind the position used inGet
. Asides from selection, a disorderly reinsertion of numbers back into the pool is also a source of randomness.- number
the number to be returned
- ary
the
Array
ofInt
numbers to which the number is to be returned- returns
true
, if this return was successful;false
, otherwise
- Definition Classes
- RandomSelector → NumberSelector
- def ReturnIndex: Int
- Definition Classes
- NumberSelector
- def SelectionIndex: Int
- Definition Classes
- NumberSelector
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- var ret: Int
The index for the selector when performing a number return action, then modified for the "next" index.
The index for the selector when performing a number return action, then modified for the "next" index.
- Attributes
- protected
- Definition Classes
- NumberSelector
- var selectionIndex: Int
The index for the selector when performing a number selection action, then modified to the "next" index.
The index for the selector when performing a number selection action, then modified to the "next" index.
- Attributes
- protected
- Definition Classes
- NumberSelector
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()