pub struct RandBetweenFn;Trait Implementations§
Source§impl Debug for RandBetweenFn
impl Debug for RandBetweenFn
Source§impl Function for RandBetweenFn
Returns a random integer between two inclusive bounds.
impl Function for RandBetweenFn
Returns a random integer between two inclusive bounds.
RANDBETWEEN evaluates both bounds, then samples an integer in [low, high].
§Remarks
- Bounds are coerced to numbers and truncated to integers.
- If
high < low, the function returns#NUM!. - The function is volatile and may return a different integer each recalculation.
§Examples
title: "Value always falls inside the requested interval"
formula: "=LET(n, RANDBETWEEN(1, 3), AND(n>=1, n<=3, INT(n)=n))"
expected: truetitle: "Equal bounds produce a fixed value"
formula: "=RANDBETWEEN(7, 7)"
expected: 7title: "Upper bound below lower bound is invalid"
formula: "=RANDBETWEEN(5, 1)"
expected: "#NUM!"related:
- RAND
- INT
- LET
faq:
- q: "Are both bounds included in RANDBETWEEN?"
a: "Yes. RANDBETWEEN samples an integer in the closed interval [low, high]."
- q: "What happens with decimal bounds like RANDBETWEEN(1.9, 4.2)?"
a: "Bounds are truncated to integers before sampling, so this behaves like RANDBETWEEN(1, 4)."
- q: "Is RANDBETWEEN deterministic?"
a: "It is volatile, so results can change on recalculation, though a single evaluation context uses seeded randomness for reproducible execution."[formualizer-docgen:schema:start] Name: RANDBETWEEN Type: RandBetweenFn Min args: 2 Max args: 2 Variadic: false Signature: RANDBETWEEN(arg1: number@scalar, arg2: number@scalar) Arg schema: arg1{kinds=number,required=true,shape=scalar,by_ref=false,coercion=NumberLenientText,max=None,repeating=None,default=false}; arg2{kinds=number,required=true,shape=scalar,by_ref=false,coercion=NumberLenientText,max=None,repeating=None,default=false} Caps: VOLATILE [formualizer-docgen:schema:end]
fn name(&self) -> &'static str
fn min_args(&self) -> usize
fn arg_schema(&self) -> &'static [ArgSchema]
Source§fn eval<'a, 'b, 'c>(
&self,
args: &'c [ArgumentHandle<'a, 'b>],
ctx: &dyn FunctionContext<'b>,
) -> Result<CalcValue<'b>, ExcelError>
fn eval<'a, 'b, 'c>( &self, args: &'c [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext<'b>, ) -> Result<CalcValue<'b>, ExcelError>
The unified evaluation path. Read more
fn namespace(&self) -> &'static str
fn variadic(&self) -> bool
fn volatile(&self) -> bool
Source§fn aliases(&self) -> &'static [&'static str]
fn aliases(&self) -> &'static [&'static str]
Optional list of additional alias names (case-insensitive) that should resolve to this
function. Default: empty slice. Implementors can override to expose legacy names.
Returned slice must have ’static lifetime (typically a static array reference).
fn function_salt(&self) -> u64
Source§fn eval_reference<'a, 'b, 'c>(
&self,
_args: &'c [ArgumentHandle<'a, 'b>],
_ctx: &dyn FunctionContext<'b>,
) -> Option<Result<ReferenceType, ExcelError>>
fn eval_reference<'a, 'b, 'c>( &self, _args: &'c [ArgumentHandle<'a, 'b>], _ctx: &dyn FunctionContext<'b>, ) -> Option<Result<ReferenceType, ExcelError>>
Optional reference result path. Only called by the interpreter/engine
when the callsite expects a reference (e.g., range combinators, by-ref
argument positions, or spill sources). Read more
Source§fn dispatch<'a, 'b, 'c>(
&self,
args: &'c [ArgumentHandle<'a, 'b>],
ctx: &dyn FunctionContext<'b>,
) -> Result<CalcValue<'b>, ExcelError>
fn dispatch<'a, 'b, 'c>( &self, args: &'c [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext<'b>, ) -> Result<CalcValue<'b>, ExcelError>
Dispatch to the unified evaluation path with automatic argument validation.
Auto Trait Implementations§
impl Freeze for RandBetweenFn
impl RefUnwindSafe for RandBetweenFn
impl Send for RandBetweenFn
impl Sync for RandBetweenFn
impl Unpin for RandBetweenFn
impl UnsafeUnpin for RandBetweenFn
impl UnwindSafe for RandBetweenFn
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more