1 package org.simantics.scl.runtime.procedure;
3 import java.util.Random;
5 import org.simantics.scl.runtime.SCLContext;
6 import org.simantics.scl.runtime.function.Function;
7 import org.simantics.scl.runtime.tuple.Tuple0;
9 public class RandomEffect {
10 public static final String RANDOM = "random";
12 public static Object withSeed(long seed, Function fun) {
13 SCLContext context = SCLContext.getCurrent();
14 Random oldRandom = (Random)context.put(RANDOM, new Random(seed));
16 return fun.apply(Tuple0.INSTANCE);
18 context.put(RANDOM, oldRandom);
22 public static Object runRandom(Function fun) {
23 SCLContext context = SCLContext.getCurrent();
24 Random oldRandom = (Random)context.put(RANDOM, new Random());
26 return fun.apply(Tuple0.INSTANCE);
28 context.put(RANDOM, oldRandom);