From 4ea18d8bbc5353a6685ee1f22e4fa8bad5f7849f Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 5 Apr 2014 18:55:05 -0300 Subject: [PATCH] love.math.setRandomSeed now calls random() a couple times internally, to make similar seeds give less similar results when random() is called for the first time after setRandomSeed. --- src/modules/math/RandomGenerator.cpp | 5 +++++ src/scripts/boot.lua | 1 - src/scripts/boot.lua.h | 3 --- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/modules/math/RandomGenerator.cpp b/src/modules/math/RandomGenerator.cpp index 0e26d3e8d..7c22a6e3f 100644 --- a/src/modules/math/RandomGenerator.cpp +++ b/src/modules/math/RandomGenerator.cpp @@ -81,6 +81,11 @@ void RandomGenerator::setSeed(RandomGenerator::Seed newseed) seed = newseed; rng_state = seed; + + // Xorshift's first couple results after seeding will be similar to results + // from very similar seeds, so we immediately discard them here. + for (int i = 0; i < 2; i++) + rand(); } RandomGenerator::Seed RandomGenerator::getSeed() const diff --git a/src/scripts/boot.lua b/src/scripts/boot.lua index a45fa3ebe..faa95a7eb 100644 --- a/src/scripts/boot.lua +++ b/src/scripts/boot.lua @@ -468,7 +468,6 @@ function love.run() if love.math then love.math.setRandomSeed(os.time()) - for i=1,3 do love.math.random() end end if love.event then diff --git a/src/scripts/boot.lua.h b/src/scripts/boot.lua.h index 9916d54b8..5040735bb 100644 --- a/src/scripts/boot.lua.h +++ b/src/scripts/boot.lua.h @@ -836,9 +836,6 @@ const unsigned char boot_lua[] = 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x73, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x65, 0x65, 0x64, 0x28, 0x6f, 0x73, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x28, 0x29, 0x29, 0x0a, - 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, 0x33, 0x20, 0x64, 0x6f, 0x20, 0x6c, 0x6f, 0x76, - 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x28, 0x29, 0x20, 0x65, 0x6e, - 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a,