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