package de.bse.prgm.cmd.num;
import de.bse.prgm.cmd.HotspotCompiledCommand;
import de.bse.prgm.err.runtime.CannotChangeAConstantValueRuntimeError;
import de.bse.run.app.IConsole;
import de.bse.util.ParserException;
import de.bse.vm.Machine;
import de.bse.vm.var.IVariable;
/**
* Generates a pseudo-random value based on the value of a variable and stores the generated value
* in the variable.
*
* @author Elias Groll
* @version 2.15
*/
public class Random extends HotspotCompiledCommand {
public Random(String varString) {
super();
this.varString = varString;
}
String varString;
IVariable var;
java.util.Random random;
public void execute(Machine machine, IConsole console) {
super.execute(machine, console);
if (var != null) {
try {
random.setSeed(var.getValue());
int rand = Math.abs(random.nextInt())%65535 ;
var.setValue(rand);
} catch (ParserException e) {
machine.getProgram().addError(new CannotChangeAConstantValueRuntimeError(varString));
}
}
}
public String infoMsg() {
return "[Info]Generate a pseudo-random number on " + varString;
}
public void init(Machine machine) {
var = machine.parseIVariable(varString);
random = new java.util.Random();
}
@Override
public String toString() {
return "RANDOM";
}
}