/usr/share/common-lisp/source/kmrcl/random.lisp is in cl-kmrcl 1.106-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
;;;; Name: random.lisp
;;;; Purpose: Random number functions for KMRCL package
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
;;;; KMRCL users are granted the rights to distribute and use this software
;;;; as governed by the terms of the Lisp Lesser GNU Public License
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
;;;; *************************************************************************
(in-package #:kmrcl)
(defun seed-random-generator ()
"Evaluate a random number of items"
(let ((randfile (make-pathname
:directory '(:absolute "dev")
:name "urandom")))
(setf *random-state* (make-random-state t))
(if (probe-file randfile)
(with-open-file
(rfs randfile :element-type 'unsigned-byte)
(let*
;; ((seed (char-code (read-char rfs))))
((seed (read-byte rfs)))
;;(format t "Randomizing!~%")
(loop
for item from 1 to seed
do (loop
for it from 0 to (+ (read-byte rfs) 5)
do (random 65536))))))))
(defmacro random-choice (&rest exprs)
`(case (random ,(length exprs))
,@(let ((key -1))
(mapcar #'(lambda (expr)
`(,(incf key) ,expr))
exprs))))
|