package water.rapids.ast.prims.advmath;
import water.fvec.Frame;
import water.fvec.Vec;
import water.rapids.Env;
import water.rapids.Val;
import water.rapids.vals.ValFrame;
import water.rapids.ast.AstPrimitive;
import water.rapids.ast.AstRoot;
import java.util.Random;
public class AstRunif extends AstPrimitive {
@Override
public String[] args() {
return new String[]{"ary", "seed"};
}
@Override
public int nargs() {
return 1 + 2;
} // (h2o.runif frame seed)
@Override
public String str() {
return "h2o.runif";
}
@Override
public ValFrame apply(Env env, Env.StackHelp stk, AstRoot asts[]) {
Frame fr = stk.track(asts[1].exec(env)).getFrame();
long seed = (long) asts[2].exec(env).getNum();
if (seed == -1) seed = new Random().nextLong();
return new ValFrame(new Frame(new String[]{"rnd"}, new Vec[]{fr.anyVec().makeRand(seed)}));
}
}