arcade-mcp/toolkits/math/arcade_math/tools/random.py
Mateo Torres f04087b389
Math tools expanded (#293)
Migrated all interfaces to get and return strings.

Added tests and evals for all functions (except the random generation)
Math functions are now organized into different math categories

---------

Co-authored-by: Nate Barbettini <nate@arcade-ai.com>
2025-03-14 09:47:04 -03:00

38 lines
1.4 KiB
Python

import random
from typing import Annotated, Optional
from arcade.sdk import tool
@tool
def generate_random_int(
min_value: Annotated[str, "The minimum value of the random integer as a string"],
max_value: Annotated[str, "The maximum value of the random integer as a string"],
seed: Annotated[
Optional[str],
"The seed for the random number generator as a string."
" If None, the current system time is used.",
] = None,
) -> Annotated[str, "A random integer between min_value and max_value as a string"]:
"""Generate a random integer between min_value and max_value (inclusive)."""
if seed is not None:
random.seed(int(seed))
return str(random.randint(int(min_value), int(max_value))) # noqa: S311
@tool
def generate_random_float(
min_value: Annotated[str, "The minimum value of the random float as a string"],
max_value: Annotated[str, "The maximum value of the random float as a string"],
seed: Annotated[
Optional[str],
"The seed for the random number generator as a string."
" If None, the current system time is used.",
] = None,
) -> Annotated[str, "A random float between min_value and max_value as a string"]:
"""Generate a random float between min_value and max_value."""
if seed is not None:
random.seed(int(seed))
return str(random.uniform(float(min_value), float(max_value))) # noqa: S311