(defun C:randRot (/ ss i il imax maxDeg currElem currRotList currRot currRotDeg randomNumber newRotDeg newRot newRotList newElem)
    ;variables:
    (setq i 0);counter to zero
    (setq imax 1);while variable

    (graphscr)
    (prompt "\nselect entities to be rotated: ")
    (setq ss (ssget));asks for selection
    (setq il (sslength ss));length of selection
    

    (setq maxDeg (getreal "\nMaximum degrees :"))
    

    (while imax
        (print i)
        (setq currElem (entget (ssname ss i) ))
        (setq currRotList (assoc 50 currElem))
        (setq currRot (cdr currRotList))
        (setq currRotDeg (rtd currRot))
        (setq randomNumber (- (fix(* (* 2 maxDeg) (rnd))) maxDeg))
        (setq newRotDeg (+ randomNumber currRotDeg))
        (setq newRot (dtr newRotDeg))

        (setq newRotList(cons 50 newRot))

        (setq newElem(subst newRotList currRotList currElem))
        ;; (print currElem)
        ;; (print newElem)
        (entmod newElem)
       
       
        ;while specific: 
        (setq i (1+ i));increments i
        (if (= i il) (setq imax nil));finish function if i equals il
    )

    (terpri)    
    (setq ss nil)
)


(defun rnd (/ modulus multiplier increment random)
  (if (not seed)
    (setq seed (getvar "DATE"))
  )
  (setq modulus    65536
        multiplier 25173
        increment  13849
        seed  (rem (+ (* multiplier seed) increment) modulus)
        random     (/ seed modulus)
  )
)


(defun dtr (a)
    (* pi (/ a 180)) 
)


(defun rtd (a)
    (/ (* a 180) pi)
)