;;Binomial variable generator ;;output:Nil or T (failure or success respectively) ;(load "globals") (defun randbin1 (p) (if (< (my-random 1.0) p) t nil)) (defun rand_p () (setf a 16807) (setf m 2147483647) (setf q 127773) (setf r 2836) (setf x (my-random 100000.0)) (setf x_new (- (* a (mod x q)) (* r (/ x q)))) (if (> x_new 0) (setf x x_new) (setf x (+ x_new m))) (values (/ x m))) ;;Normal variable generator using Box-Muller Method ;;input mean and standard deivation ;;output a random normal number (defmacro while (test &rest body) `(do () ((not ,test)) ,@body)) (defun randnorm (mu sigma) (setf s 1) (while (>= s 1) (let* ((u1 (my-random 1.0)) (u2 (my-random 1.0))) (setf v1 (- (* 2 u1) 1)) (setf v2 (- (* 2 u2) 1)) (setf s (+ (* v1 v1) (* v2 v2))))) (setf x (* v1 (/ (isqrt (round (* (/ (* -2 (log s)) s) 100))) 10))) (setf norm (+ mu (* sigma x))) (values norm)) (defun first0 (lst) (<= (car lst) )) ;;cumulative sum of cost and value (defun current_cum_value (list) (let* ((v 0)) (dolist (i list) (setf v (+ v (car i)))) v)) (defun current_cum_cost (list) (let* ((c 0)) (dolist (i list) (setf c (+ c (nth 1 i)))) c)) (defun cumsum_vc (current_value current_cost) (setf cum_value (+ cum_value current_value)) (setf cum_cost (+ cum_cost current_cost)))