create random numbers on the command line, with the sfk random command available on Windows, Mac OS X and Linux.
sfk rand[om] [opt] [from to]
create a random number.
options
-hex produce hex output
-dig=n always use n digits
setting a random seed
to set a fixed randomizer seed
at the start of a script, use:
sfk rand seed n
with n from 1 to 16384.
command chaining
supports output chaining.
examplessfk rand 1 1000
create a number from 1 to 1000
sfk rand -dig=6 1 999999
create a number from 1 to 999999
with 6 digits, zero prefixed
sfk rand 1 10 +setvar r
set variable r to a random number
example script: a number guessing game
@echo off
sfk script %~f0 -from begin %*
rem . %~f0 is the absolute batch file name
GOTO xend
sfk label begin -var
+if "%1 = " begin
+tell "add 'play' to play the number game."
+stop 0
+endif
+if "%1 = play" begin
+call game
+stop 0
+endif
+tell "unknown parameter: %1"
+end
sfk label game
// Note: install SFKTray to see colorful lights.
+rand 1 10
+setvar mynum
+tell "i know a number, you can guess it."
+tell "enter from 1 to 10, you have 3 tries."
+setvar try="try again."
+for i from 1 to 3
+prompt
+setvar usernum
+if "#(i) > 2"
then setvar try=""
+if "#(mynum) < #(usernum)" begin
+status local "slot=#(i) color=red"
+tell "no, my number is [Red]lower[def]. #(try)"
+endif
+if "#(mynum) > #(usernum)" begin
+status local "slot=#(i) color=red"
+tell "no, my number is [Red]higher[def]. #(try)"
+endif
+if "#(mynum) = #(usernum)" begin
+status local "slot=1 color=green blink=fast timeout=10"
+status local "slot=2 color=green blink=fast timeout=10"
+tell "[green]correct, you win![def]"
+stop 0
+endif
+endfor
+status local "slot=1 color=red blink=fast timeout=10"
+status local "slot=2 color=red blink=fast timeout=10"
+tell "[Red]3 tries done, you loose. it was #(mynum).[def]"
+end
:xend