【SICP练习】143 练习3.81

练习3-81

原文

“random” numbers. Produce a stream formulation of this same generator that operates on an input stream of requests to generate a new random number or to reset the sequence to a specified value and that produces the desired stream of random numbers. Don’t use assignment in your solution.Exercise 3.81. Exercise 3.6 discussed generalizing the random-number generator to allow one to reset the random-number sequence so as to produce repeatable sequences of

代码


(define (random-update x)
   (remainder (+ (* 13 x) 5) 24))
;Value: random-update

(define random-init
   (random-update (expt 2 32)))
;Value: random-init

(define (random-number-generator command-stream)
   (define random-number
       (cons-stream random-init
                    (stream-map (lambda (number command)
                                (cond
                                 ((null? command) the-empty-stream)
                                 ((eq? command ‘generator)
                                  (random-update number))
                                ((and (pair? command)
                                      (eq? (car command) ‘reset))
                                 (cdr command))
                                (else
                                 (error "bad command -- " command))))
                                random-number
                                command-stream)))
       random-number)
 ;Value: random-number-generator
时间: 2024-08-18 05:12:38

【SICP练习】143 练习3.81的相关文章

Oracle汉字转拼音package

--函数GetHzFullPY(string)用于获取汉字字符串的拼音 --select GetHzFullPY('中华人民共和国') from dual; --返回:ZhongHuaRenMinGongHeGuo --函数GetHzPYCAP(string)用于获取拼音首字母 --select GetHzPYCAP('中华人民共和国') from dual; --返回ZHRMGHG create or replace package GetHZPY is -- Author : ADMINIS

图像储存容器Mat[OpenCV 笔记11]

IplImage 与 Mat IplImage是OpenCV1中的图像存储结构体,基于C接口创建.在退出之前必须release,否则就会造成内存泄露.在一些只能使用C语言的嵌入式系统中,不得不使用. IplImage* img = cvLoadImage("imagename.jpg",1); Mat类内存分配是自动完成的,不必手动开辟空间(非必须),不必在不需要时释放空间. Mat类的构成 Mat由矩阵头和一个指向存储图像矩阵的指针组成.为应该尽量避免图像的复制,加快程序运行速度,M

Oracle DBA管理包脚本系列(二)

该系列脚本结合日常工作,方便DBA做数据管理.迁移.同步等功能,以下为该系列的脚本,按照功能划分不同的包.功能有如下: 1)数据库对象管理(添加.修改.删除.禁用/启用.编译.去重复.闪回.文件读写.会话管理.表空用.用户/权限管理): 2)数据库分析: 3)数据库备份: 4)数据库同步: 5)数据库数据导出: 6)获取数据库对象源码: 7)数据库对比智能升级: ...... 更多功能请自行体验. 本系列包依赖于Oracle DBA管理包脚本系列系列(一)的脚本. EXEC PKG_DBMANA

tpcc-mysql测试mysql5.6 (xfs文件系统)

操作系统版本:CentOS release 6.5 (Final)  2.6.32-431.el6.x86_64 #1 内存:32G CPU:Intel(R) Xeon(R) CPU E5-2450 v2 @ 2.50GHz (逻辑32核) 磁盘:PCIE-SSD(型号稍后补上) 文件系统类型:xfs mysql数据库版本:Server version:   5.6.22-72.0-log Percona Server (GPL), Release 72.0, Revision 738 inno

升级linux内核(2.6.32->3.10.81),安装docker

1.内核升级环境准备 #查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库: yum grouplist #一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具 yum groupinstall "Development Tools" #你必须这样才能让 make *config 这个指令正确地执行 yum install ncurses-devel #如果你没有 X 环境,这一条可以不用 yum install qt-devel #创建 Cent

81.内存模式实现cgi查询

创建全局的二级指针 1 char ** g_pp;//全局的二级指针 获取数据有多少行 1 //获取行数 2 int getimax() 3 { 4 int hang = -1; 5 FILE *pf = fopen(path, "r");//读文件打开路径 6 if (pf == NULL) 7 { 8 printf("文件打开失败"); 9 return -1; 10 } 11 else 12 { 13 hang = 0; 14 while (!feof(pf)

143.vector模板库

myvector.h 1 #pragma once 2 #include <initializer_list> 3 #include <iostream> 4 using namespace std; 5 6 template<class T> 7 class myvector 8 { 9 public: 10 myvector(); 11 myvector(int n); 12 myvector(initializer_list<T> my); 13 vo

SICP 习题 (1.46)解题总结

SICP 习题 1.46 要求我们写一个过程iterative-improve,它以两个过程为参数,其中一个参数用来检测猜测是否足够好,另一个参数用来改进猜测.过程iterative-improve应该返回另一个过程,所返回的过程接收一个参数作为初始猜测,然后不断改进猜测直到结果足够好.题目还要求我们使用iterative-improve重写1.1.7的sqrt过程和1.3.3节的fixed-point过程. 因为涉及到高阶函数,所以整个题目理解起来有一点点费劲.不过这道题作为第一章的收官题确实

SICP 1.19

解:这道题很有意思,结论是斐波那契数也可以用对数时间复杂度获得. 通过Tpq(Tpq)=TPQ建立方程,解得: P=pp+qq Q=qq+2pq 程序如下: (define (fib n)   (define (even? n)     (= (remainder n 2) 0))   (define (fib-iter a b p q count)     (cond ((= count 0) b)           ((even? count) (fib-iter a