random() may yield different pseudo-random number sequences for the
same seed on another system. For instance, at least some versions of
MinGW provide a random() in -liberty that differs from traditional BSD
(see commit c8231b12
). Rather inconvenient for regression testing.
MT19937 Mersenne Twister is a proven, high-quality PRNG. Actual code
is reference code provided by the inventors[*]. Quick tests show
performance comparable to random().
Like random(), MT is not cryptographically secure: observing enough of
its output permits guessing its state, and thus its future output. I
don't think players can do that.
Drop the copy of BSD random() we added for Windows.
Like the previous commit, this changes the server's die rolls, and
makes fairland create a different random map for the same seed. Update
expected smoke test results accordingly.
[*] mt19937ar.sep.tgz downloaded from
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html
23 lines
466 B
Bash
Executable file
23 lines
466 B
Bash
Executable file
#!/bin/sh -e
|
|
# Basic fairland test
|
|
|
|
if [ $# -ne 1 ]
|
|
then echo "Usage: $0 SRCDIR" >&2; exit 1
|
|
fi
|
|
|
|
srcdir="$1"
|
|
|
|
. "$srcdir"/tests/test-common.sh
|
|
|
|
create_sandbox
|
|
|
|
exec 3>sandbox/fairland.out
|
|
|
|
src/util/files -e sandbox/etc/empire/econfig -f >&3
|
|
src/util/fairland -e sandbox/etc/empire/econfig -s sandbox/newcap_script -R 1 10 30 >&3
|
|
|
|
exec 3>&-
|
|
|
|
src/util/empdump -e sandbox/etc/empire/econfig -x >sandbox/fairland.xdump
|
|
|
|
cmp_out fairland.out fairland.xdump newcap_script
|