aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2017-07-03 12:35:14 +1200
committerTom Ryder <tom@sanctum.geek.nz>2017-07-03 12:35:14 +1200
commit64427872e9a259dab9e2b27dd6e3e1f430c06274 (patch)
tree7746d50d6f837c1bdb1480b72bd84db0d663451f /bin
parent7187e3bd871d6bb5491b9c20ba30de7e6702ce42 (diff)
downloaddotfiles-64427872e9a259dab9e2b27dd6e3e1f430c06274.tar.gz
dotfiles-64427872e9a259dab9e2b27dd6e3e1f430c06274.zip
Work around mawk's srand() behaviour
Specific values for these tasks get chosen way more often than other in mawk, and it seems to be caused by the random seed being above a certain value. Not sure if it's a bug or how it interacts with the POSIX standard, but this seems to fix it.
Diffstat (limited to 'bin')
-rw-r--r--bin/rndi.awk5
-rw-r--r--bin/rndl.awk5
2 files changed, 8 insertions, 2 deletions
diff --git a/bin/rndi.awk b/bin/rndi.awk
index 07c69bc7..7d5a5b96 100644
--- a/bin/rndi.awk
+++ b/bin/rndi.awk
@@ -16,10 +16,13 @@ BEGIN {
if (lower >= upper)
fail("Bounds must be numeric, first lower than second")
- # Seed the random number generator
+ # Get a random seed if rnds(1df) available
rnds = "rnds 2>/dev/null"
rnds | getline seed
close(rnds)
+
+ # Truncate the seed to 8 characters because mawk might choke on it
+ seed = substr(seed,1,8)
if (length(seed))
srand(seed + 0)
else
diff --git a/bin/rndl.awk b/bin/rndl.awk
index 925235ee..99f5b4e1 100644
--- a/bin/rndl.awk
+++ b/bin/rndl.awk
@@ -6,10 +6,13 @@ BEGIN {
# Name self
self = "rndl"
- # Seed the random number generator
+ # Get a random seed if rnds(1df) available
rnds = "rnds 2>/dev/null"
rnds | getline seed
close(rnds)
+
+ # Truncate the seed to 8 characters because mawk might choke on it
+ seed = substr(seed,1,8)
if (length(seed))
srand(seed + 0)
else