This file is indexed.

/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))))