From 0d246f1a2217655b25e047bf2b432537d7dc48db Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sun, 24 Jan 2021 11:33:52 +0800 Subject: [PATCH] add choose --- docs/lib2x-choose.md | 16 ++++++++++++++++ src/util/choose.scad | 13 +++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 docs/lib2x-choose.md create mode 100644 src/util/choose.scad diff --git a/docs/lib2x-choose.md b/docs/lib2x-choose.md new file mode 100644 index 00000000..2b4e0ea7 --- /dev/null +++ b/docs/lib2x-choose.md @@ -0,0 +1,16 @@ +# choose + +Choose an element from the given list randomly. + +**Since:** 2.5 + +## Parameters + +- `choices` : The list to choose from. +- `seed` : Random seed value. + +## Examples + + use ; + + echo(choose([1, 2, 3, 4])); \ No newline at end of file diff --git a/src/util/choose.scad b/src/util/choose.scad new file mode 100644 index 00000000..f85bbe08 --- /dev/null +++ b/src/util/choose.scad @@ -0,0 +1,13 @@ +/** +* choose.scad +* +* @copyright Justin Lin, 2021 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib2x-choose.html +* +**/ + +function choose(choices, seed) = + let(c = is_undef(seed) ? rands(0, len(choices) - 1, 1) : rands(0, len(choices) - 1, 1, seed)) + choices[round(c[0])]; \ No newline at end of file