;;; -*- mode: lisp -*-
;;; $Id: random.poplisp,v 1.0 2002/05/08 17:32:00 dada Exp $

(defconstant IM     139968)
(defconstant IA       3877)
(defconstant IC     29573)

(defvar LAST 42)

(declaim (inline gen_random))
(defun gen_random (max)
  (declare (type (signed-byte 32) IM IA IC LAST))
  (declare (double-float max))
  (setq LAST (mod (+ (the fixnum (* LAST IA)) IC) IM))
  (/ (* max LAST) IM))

  (let ((n (parse-integer (or (car pop11::poparglist) "1"))))
    (loop for i fixnum from 1 below n do
      (gen_random 100.0d0))
    (format t "~,9K~%" (gen_random 100.0d0)))