Repository navigation
Modern Math Choice
Paul Squires edited this page Nov 11, 2026
·
6 revisions
Home › Math Library › Math Library › Choice
Returns one element of an array or container picked at random, by reference.
Choice( r, a( ) )#import "std/numeric"
using numeric
dim r as Rng = RngFromEntropy( )
dim as string names_( 0 to 2 ) = { "ada", "grace", "alan" }
'' One element, uniformly. It returns BYREF, so it can be assigned
'' through as well as read.
dim as string picked = Choice( r, names_( ) )
print picked = "ada" orelse picked = "grace" orelse picked = "alan" '' -1ChoiceArray( r, a ) '' containers.Array( of T )
ChoiceDeque( r, d ) '' containers.Deque( of T )The same pick for the containers, for any element type: one draw, every element equally likely, returned by reference. On an empty container there is no element to return, and both raise runtime error 6 (out of bounds). There is no form for a LinkedList, because reaching a random node means walking the list; copy it into an Array first.
#import "std/containers"
#import "std/numeric"
using containers
using numeric
dim r as Rng = RngFromEntropy( )
dim stock as Array( of int32 ) = { 5, 5, 5 }
'' By reference: this takes one from a random slot
ChoiceArray( r, stock ) -= 1
print stock[ 0 ] + stock[ 1 ] + stock[ 2 ] '' 14
dim names_ as Array( of ustring ) = { "ada", "grace", "alan" }
dim as ustring picked = ChoiceArray( r, names_ )
print picked = "ada" orelse picked = "grace" orelse picked = "alan" '' -1Library: Math Library
Category: Math Library
Documented under: Nothing Becomes A Keyword
tiko-lang · Home · Feature Index · Keyword Index · License
FreeBASIC manual pages reproduced under the GNU FDL 1.3.
- Home
- What Is tiko-lang
- Quick Start
- Installing on macOS
- Debugging
- Feature Index
- Compatibility
- FAQ
- AI Cheatsheet
- Generics
- Interfaces
- For Each
- Iterators
- Tuples
- Array Results
- Defer
- Lambdas
- Block Strings
- Partial Types
- String Slices
- Embed
- Typed Variadics
- C Header Import
- Foreign Library Linking
- UString
- Fixed-Width Types
- Nullptr
- String Library
- Format
- Array
- Map
- Set
- LinkedList
- OrderedMap
- OrderedSet
- Sorting
- Optional
- Result
- Smart Pointers
- Date and Time (Chrono)
- Time Zones
- Filesystem
- File Streams
- Config (INI and TOML)
- Codec
- Hash
- UUID
- OS
- Process
- Net
- HTTP and TLS
- Math Library
- Finance
- Logging
- Terminal TUI Library
- PsControls
- tkControls
- sys/win
- Goroutines and Channels
- LLVM Backend
- tiko build
- TIKO_COMPILER
- Variable Declarations
- Standard Data Types
- User Defined Types
- Procedures
- Operators
- Control Flow Statements
- Converting Data Types
- Array Functions
- String Functions
- Mathematical Functions
- Bit Manipulation
- Date and Time Functions
- File I/O Functions
- Console Functions
- User Input (Runtime Library)
- User Input Functions (Graphics Library)
- Screen Functions
- 2D Drawing Functions
- Graphics Library Reference
- Graphics Keyword List
- Memory Functions
- Threading Support Functions
- Error Handling Functions
- Operating System Functions
- Preprocessor
- Intrinsic Defines
- Miscellaneous Keywords
- Modularizing