Increase randomness by updating the random's seed every minute
This commit is contained in:
parent
264a94fe0d
commit
ba64c02049
@ -14,6 +14,7 @@ import wtf.beatrice.hidekobot.util.Logger;
|
||||
import java.awt.*;
|
||||
import java.lang.reflect.Field;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Random;
|
||||
|
||||
public class Cache
|
||||
{
|
||||
@ -23,6 +24,10 @@ public class Cache
|
||||
private static final String botPrefix = "hideko";
|
||||
private static final Logger logger = new Logger(Cache.class);
|
||||
|
||||
// the Random instance that we should always use when looking for an RNG based thing.
|
||||
// the seed is updated periodically.
|
||||
private static final Random randomInstance = new Random();
|
||||
|
||||
private static PropertiesSource propertiesSource = null;
|
||||
private static ConfigurationSource configurationSource = null;
|
||||
private static DatabaseSource databaseSource = null;
|
||||
@ -60,6 +65,14 @@ public class Cache
|
||||
*/
|
||||
public static int[] getSupportedAvatarResolutions() { return supportedAvatarResolutions; }
|
||||
|
||||
public static Random getRandom() {
|
||||
return randomInstance;
|
||||
}
|
||||
|
||||
public static void setRandomSeed(long seed) {
|
||||
randomInstance.setSeed(seed);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the bot has been started with the verbose argument.
|
||||
*
|
||||
|
@ -18,6 +18,7 @@ import wtf.beatrice.hidekobot.listeners.SlashCommandCompletionListener;
|
||||
import wtf.beatrice.hidekobot.listeners.SlashCommandListener;
|
||||
import wtf.beatrice.hidekobot.runnables.ExpiredMessageTask;
|
||||
import wtf.beatrice.hidekobot.runnables.HeartBeatTask;
|
||||
import wtf.beatrice.hidekobot.runnables.RandomSeedTask;
|
||||
import wtf.beatrice.hidekobot.runnables.StatusUpdateTask;
|
||||
import wtf.beatrice.hidekobot.util.CommandUtil;
|
||||
import wtf.beatrice.hidekobot.util.Logger;
|
||||
@ -184,6 +185,8 @@ public class HidekoBot
|
||||
scheduler.scheduleAtFixedRate(heartBeatTask, 10, 30, TimeUnit.SECONDS); //every 30 seconds
|
||||
StatusUpdateTask statusUpdateTask = new StatusUpdateTask();
|
||||
scheduler.scheduleAtFixedRate(statusUpdateTask, 0, 60 * 5, TimeUnit.SECONDS); // every 5 minutes
|
||||
RandomSeedTask randomSeedTask = new RandomSeedTask();
|
||||
scheduler.scheduleAtFixedRate(randomSeedTask, 0, 60, TimeUnit.SECONDS); // every minute
|
||||
|
||||
// register shutdown interrupt signal listener for proper shutdown.
|
||||
Signal.handle(new Signal("INT"), signal -> shutdown());
|
||||
|
@ -0,0 +1,12 @@
|
||||
package wtf.beatrice.hidekobot.runnables;
|
||||
|
||||
import wtf.beatrice.hidekobot.Cache;
|
||||
|
||||
public class RandomSeedTask implements Runnable
|
||||
{
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Cache.setRandomSeed(System.currentTimeMillis());
|
||||
}
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
package wtf.beatrice.hidekobot.util;
|
||||
|
||||
import wtf.beatrice.hidekobot.Cache;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class RandomUtil
|
||||
{
|
||||
private static final Random random = new Random();
|
||||
|
||||
|
||||
/**
|
||||
* Returns a random integer picked in a range.
|
||||
*
|
||||
@ -29,7 +28,7 @@ public class RandomUtil
|
||||
int difference = (max - min) + 1;
|
||||
|
||||
// find a number between 0 and our range (eg. 5 -> 8 = 0 -> 3)
|
||||
int randomTemp = random.nextInt(difference);
|
||||
int randomTemp = Cache.getRandom().nextInt(difference);
|
||||
|
||||
// add the minimum value, so we are sure to be in the original range (0->5, 1->6, 2->7, 3->8)
|
||||
return randomTemp + min;
|
||||
|
Loading…
Reference in New Issue
Block a user