Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.59 KB | None | 0 0
  1. fun compute(flag, v, c, d) {
  2. val zz = ref(normal(0.0,1.0))
  3. val new_v = (1.0 + c * !zz)^3.0
  4. if(flag) {
  5. if (log(sample()) > (0.5 * !zz^(2.0) + d - d * new_v + d * log(new_v))) {
  6. compute(True, new_v, c, d)
  7. } else {
  8. compute(False, new_v, c, d)
  9. }
  10. } else {
  11. return new_v
  12. }
  13. }
  14.  
  15.  
  16. fun gamrand(alpha : double, lambda : double) {
  17. if(alpha>1.0) {
  18. val d = alpha - 1.0/3.0
  19. val c = 1.0/sqrt(9.0*d)
  20.  
  21. return d * compute(True, 0.0, c, d) / lambda
  22. }
  23. else {
  24. val x = gamrand(alpha+1.0,lambda);
  25. return x * sample()^(1.0/alpha);
  26. }
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement