《程序设计基础第3版》5.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《程序设计基础第3版》5.ppt

随机数 标准库cstdlib(包含于iostream中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void); 从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed); 参数seed是rand()的种子,用来初始化rand()的起始值。 举几个例子,假设我们要取得0~6之间的随机整数(不含6本身): 例一,不指定seed: for(int i=0;i10;i++){ ran_num=rand() % 6; coutran_num ; } 每次运行都将输出:5 5 4 4 5 4 0 0 4 2 例二,指定seed为定值1: srand(1); for(int i=0;i10;i++){ ran_num=rand() % 6; coutran_num ; } 每次运行都将输出:5 5 4 4 5 4 0 0 4 2 跟例子一的结果完全一样。 例三,指定seed为定值6: srand(6); for(int i=0;i10;i++){ ran_num=rand() % 6; coutran_num ; } 每次运行都将输出:4 1 5 1 4 3 4 4 2 2 随机值也是在[0,6)之间,随得的值跟srand(1)不同,但是每次运行的结果都相同。 例四,指定seed为当前系统流逝了的时间(单位为秒):time_t time(0): #include ctime //… srand((unsigned)time(0)); for(int i=0;i10;i++){ ran_num=rand() % 6; coutran_num ; } 第一次运行时输出:0 1 5 4 5 0 2 3 4 2 第二次:3 2 3 0 3 5 5 2 2 3 总之,每次运行结果将不一样,因为每次启动程序的时刻都不同(间隔须大于1秒?见下)。 关于time_t time(0): time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。比如假设输出: couttime(0); 值约为1169174701,约等于37(年)乘365(天)乘24(小时)乘3600(秒)(月日没算)。 关于ran_num = rand() % 6, 将rand()的返回值与6求模是必须的,这样才能确保目的随机数落在[0,6)之间,否则rand()的返回值本身可能是很巨大的。 一个通用的公式是: 要取得[a,b)之间的随机整数,使用(rand() % (b-a))+ a (结果值将含a不含b)。 在a为0的情况下,简写为rand() % b。 关于伪随机浮点数: 用rand() / double(RAND_MAX)可以取得0~1之间的浮点数(注意,不同于整型时候的公式,是除以,不是求模),举例: double ran_numf=0.0; srand((unsigned)time(0)); for(int i=0;i10;i++){ ran_numf = rand() / (double)(RAND_MAX); coutran_numf ; } 运行结果为:0.716636,0.457725,…等10个0~1之间的浮点数,每次结果都不同。 * 循环中用到的两条重要语句 Break Continue 哲学:事物的规定性是在对比中 认识的。 * 题目:编程求解2-100以内的全部4n+1型的质数的数目。n为整数。 思路: 枚举2,3,… ,100。 检验:是质数 且可表示为4n+1 时 让计数器加 1 * 5.4 编程实例2 假定 i 是质数,且仍需满足 i = 4n + 1 n 得为整数,改写上式 i -1 = 4n ( i -1)/ 4 = n 要求满足 ( i -1)% 4 = = 0 * #includeiostream // 预编译命令 #includecmath // 预编译命令 using namespace std;//使用名字空间 * bool IsPrime(int n) //用来判

文档评论(0)

cai + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档