OXIESEC PANEL
- Current Dir:
/
/
usr
/
share
/
guile
/
2.0
/
srfi
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
04/11/2020 07:13:11 AM
rwxr-xr-x
📄
srfi-1.scm
28.41 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-10.scm
2.76 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-11.scm
5.38 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-111.scm
1.28 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-13.scm
2.72 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-14.scm
2.33 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-16.scm
1.84 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-17.scm
6.42 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-18.scm
11.91 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-19.scm
55.92 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-2.scm
1.08 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-26.scm
2.58 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-27.scm
2.98 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-28.scm
1.17 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-31.scm
1.36 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-34.scm
3.2 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-35.scm
11.98 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-37.scm
8.37 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-38.scm
8.19 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-39.scm
2.11 KB
10/22/2016 08:09:34 PM
rw-r--r--
📁
srfi-4
-
04/11/2020 07:13:11 AM
rwxr-xr-x
📄
srfi-4.scm
4.99 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-41.scm
19.91 KB
10/22/2016 08:09:34 PM
rw-r--r--
📁
srfi-42
-
04/11/2020 07:13:11 AM
rwxr-xr-x
📄
srfi-42.scm
1.75 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-43.scm
39.07 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-45.scm
3.5 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-6.scm
1.56 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-60.scm
2.12 KB
10/22/2016 08:09:34 PM
rw-r--r--
📁
srfi-64
-
04/11/2020 07:13:11 AM
rwxr-xr-x
📄
srfi-64.scm
2.51 KB
10/22/2016 08:09:34 PM
rw-r--r--
📁
srfi-67
-
04/11/2020 07:13:11 AM
rwxr-xr-x
📄
srfi-67.scm
2.31 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-69.scm
12.7 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-8.scm
1.08 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-88.scm
1.71 KB
10/22/2016 08:09:34 PM
rw-r--r--
📁
srfi-9
-
04/11/2020 07:13:11 AM
rwxr-xr-x
📄
srfi-9.scm
13.11 KB
10/22/2016 08:09:34 PM
rw-r--r--
📄
srfi-98.scm
1.57 KB
10/22/2016 08:09:34 PM
rw-r--r--
Editing: srfi-27.scm
Close
;;; srfi-27.scm --- Sources of Random Bits ;; Copyright (C) 2010 Free Software Foundation, Inc. ;; This library is free software; you can redistribute it and/or ;; modify it under the terms of the GNU Lesser General Public ;; License as published by the Free Software Foundation; either ;; version 3 of the License, or (at your option) any later version. ;; This library is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; Lesser General Public License for more details. ;; You should have received a copy of the GNU Lesser General Public ;; License along with this library. If not, see ;; <http://www.gnu.org/licenses/>. ;;; Commentary: ;; This module is fully documented in the Guile Reference Manual. ;;; Code: (define-module (srfi srfi-27) #:export (random-integer random-real default-random-source make-random-source random-source? random-source-state-ref random-source-state-set! random-source-randomize! random-source-pseudo-randomize! random-source-make-integers random-source-make-reals) #:use-module (srfi srfi-9)) (cond-expand-provide (current-module) '(srfi-27)) (define-record-type :random-source (%make-random-source state) random-source? (state random-source-state set-random-source-state!)) (define (make-random-source) (%make-random-source (seed->random-state 0))) (define (random-source-state-ref s) (random-state->datum (random-source-state s))) (define (random-source-state-set! s state) (set-random-source-state! s (datum->random-state state))) (define (random-source-randomize! s) (let ((time (gettimeofday))) (set-random-source-state! s (seed->random-state (+ (* (car time) 1e6) (cdr time)))))) (define (random-source-pseudo-randomize! s i j) (set-random-source-state! s (seed->random-state (i+j->seed i j)))) (define (i+j->seed i j) (logior (ash (spread i 2) 1) (spread j 2))) (define (spread n amount) (let loop ((result 0) (n n) (shift 0)) (if (zero? n) result (loop (logior result (ash (logand n 1) shift)) (ash n -1) (+ shift amount))))) (define (random-source-make-integers s) (lambda (n) (random n (random-source-state s)))) (define random-source-make-reals (case-lambda ((s) (lambda () (let loop () (let ((x (random:uniform (random-source-state s)))) (if (zero? x) (loop) x))))) ((s unit) (or (and (real? unit) (< 0 unit 1)) (error "unit must be real between 0 and 1" unit)) (random-source-make-reals s)))) (define default-random-source (make-random-source)) (define random-integer (random-source-make-integers default-random-source)) (define random-real (random-source-make-reals default-random-source))