/dev/randomから読み込むプログラム
30分プログラム、その688。/dev/randomから読み込むプログラム。
聞くところによると/dev/randomは無限に乱数が書いてある(ように見える)ファイルらしいです。
聞いたことはあっても試したことがないので、読み込むプログラムを作ってみました。数字を延々と表示されても困るので適当な回数で打ち切って、それぞれの値が何回出現したかをカウントしてみました。
使い方
$ gosh random.scm 1 31 2 28 3 35 ... 253 32 254 33 255 41
ソースコード
#! /opt/local/bin/gosh ;; -*- mode:scheme; coding:utf-8 -*- ;; ;; random.scm - ;; ;; Copyright(C) 2009 by mzp ;; Author: MIZUNO Hiroki / mzpppp at gmail dot com ;; http://howdyworld.org ;; ;; Timestamp: 2009/11/03 21:46:15 ;; ;; This program is free software; you can redistribute it and/or ;; modify it under MIT Lincence. ;; (use srfi-1) (define (repeat n f) (if (< 0 n) (begin (f) (repeat (- n 1) f)))) (define table (make-hash-table)) (define count 10000) (call-with-input-file "/dev/random" (lambda (iport) (repeat count (lambda() (let1 byte (read-byte iport) (hash-table-put! table byte (+ 1 (hash-table-get table byte 0)))))))) (for-each (lambda (i) (print i " " (hash-table-get table i 0))) (iota 256))