OpenMP 编程实例(蒙特卡罗算法)
有关clock()函数
1,clock()函数在头文件#include<time.h>中
2,clock()函数的返回值类型为clock_t。clock_t其实是long,即长整形。
clock_t是用来保存时间的数据类型,typedef long clock_t。
3,clock()函数的功能:从程序被调用,创建程序进程到clock()函数调用之间的cpu时间计时单位
4,常量CLOCKS_PER_SEC,他表示一秒钟有多少个时钟计时单位。
#define CLOCK_PER_SEC ((clock_t)1000)
5. 注意: (1) clock()函数范围的时间单位是ms(毫秒)。(2) 现在的机器运算速度很快,当用clock()函数记录算法的效率时,不一定有效,可能得到的结果为0。可以尝试多次调用,这个“多”就自己去尝试吧
//利用蒙特卡罗算法计算半径为 1 单元的球体体积: //(1)串行执行程序为:#include<iostream> #include<stdlib.h> #include<time.h>using namespace std; int main() {long int max=10000000;long int i,count=0;double x,y,z,bulk,start_time,end_time;start_time=clock();time_t t;srand((unsigned) time(&t));//函数产生一个以当前时间开始的随机种子for(i=0;i<max;i++){x=rand(); //生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。 /* RAND_MAX是VC中stdlib.h中宏定义的一个字符常量: #define RAND_MAX 0x7FFF 其值最小为32767,最大为2147483647 通常在产生随机小数时可以使用RAND_MAX。*/x=x/32767;y=rand(); y=y/32767; z=rand(); z=z/32767;if((x*x+y*y+z*z)<=1)count++;}bulk=8*(double(count)/max);end_time=clock();cout<<"球体的体积为"<<bulk<<endl; cout<<"运算时间为"<<(end_time-start_time)<<endl;return 0; } //在四核服务器上执行结果为:球体体积为 4.18862,运算时间为 1703ms。//(2)并行执行程序:利用 for 语句和归并语句对程序进行并行化。#include<stdlib.h> #include<time.h> #include <stdio.h>int main() {long long max=10000000;long long i,count=0;double x,y,z,bulk,start_time,end_time;start_time=clock();time_t t;srand((unsigned) time(&t));//函数产生一个以当前时间开始的随机种子#pragma omp parallel for private(x,y,z) reduction(+:count)for(i=0;i<max;i++){x=rand();x=x/32767;y=rand();y=y/32767;z=rand();z=z/32767;if((x*x+y*y+z*z)<=1)count++;} bulk=8*((double)(count)/max); end_time=clock();printf("球体的体积为%0.8f\n",bulk);printf("运算时间为%0.8f s\n",(end_time-start_time)/1000);return 0; } //在四核服务器上执行结果为:球体体积为 4.18861,运算时间为 406ms。
OpenMP 编程实例(蒙特卡罗算法)相关推荐
- java编程算法出现在窗口_Java实现轨迹压缩算法开放窗口代码编程实例分享
Java实现轨迹压缩算法开放窗口代码编程实例分享,今天要给各位朋友分享的这篇文章主要介绍了Java编程实现轨迹压缩算法开放窗口实例代码,具有一定的参考价值,有兴趣的朋友来看看吧. 轨迹压缩算法 场景描 ...
- OpenMP: OpenMP编程指南
from: OpenMP: OpenMP编程指南 进入多核时代后,必须使用多线程编写程序才能让各个CPU核得到利用.在单核时代,通常使用操作系统提供的API来创建线程,然而,在多核系统中,情况发生了很 ...
- 三菱modbusRTU通讯实例_干货 | 解析西门子系列PLC编程实例
点击箭头处"工业之家",选择"关注公众号"! 解析西门子系列PLC编程实例 三辊卷板机有分为机械式和液压式,机械式又分为对称式和非对称式.用于重型机械公司,将金 ...
- java做a_Java编程实现A*算法完整代码
前言 A*搜寻算法俗称A星算法.这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法.常用于游戏中 通过二维数组构建的一个迷宫,"%"表示墙壁,A为起点,B为终点,&qu ...
- 大数据之Hadoop学习——动手实战学习MapReduce编程实例
文章目录 一.MapReduce理论基础 二.Hadoop.Spark学习路线及资源收纳 三.MapReduce编程实例 1.自定义对象序列化 需求分析 报错:Exception in thread ...
- 零基础学CocosCreator·第六季-常用编程框架和算法
第六季-常用编程框架和算法 01.MVC架构 MVC的含义 02.单例模式 单例(instance)的特点 作用 实现 调用 结果 补充 03.观察者模式-订阅发布模式 流程 实现 结果 04.工厂模 ...
- 【Akka】Akka入门编程实例
引言 这篇文章主要是第一次学习Akka编程,先试试水,探探坑,对Akka和SBT的使用有一个直观的了解,以几个简单的akka编程实例来说明akka的使用.希望在日后的学习和编程中,能有更多自己的体会和 ...
- 【强化学习笔记】4.3 无模型的强化学习方法-蒙特卡罗算法与重要性采样
异策略与重要性采样 因为异策略中的行动策略和目标策略不一样,也就是说行动策略产生的数据分布与目标策略的数据分布存在偏差,即即行动策略的轨迹概率分布和改善策略的轨迹概率分布不一样,因此在使用数据进行目标 ...
- Java经典编程实例源码及视频专题汇总
转:http://blog.itpub.net/28566218/viewspace-760945/ Java经典编程实例源码及视频专题汇总 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语 ...
最新文章
- textview 背景变形_西安昆明池桁架舞台背景搭建欢迎致电
- DetNAS ThunderNet
- Knative 初体验:Build Hello World
- h5-plus.webview
- [转]iis7.5+win2008 出现 HTTP Error 503. The service is unavailable.
- python集合类型中的元素是有序的_python基础篇:很有意思的数据类型,集合(set) 常用去去重...
- maven编译报错 错误: -source 1.5 中不支持 lambda 表达式
- javascript 取table中内容
- 关于使用jacob出现的异常
- ios开发--企业帐号发布
- [Android] 百度地图API Android相关配置教程(包含获取包名、发布版SHA1和开发版SHA1)
- Ubuntu零基础教学-Ubuntu下如何创建.txt记事本文件
- wifi 框架流程分析
- 华硕路由域名访问_“618” WiFi6 路由器选购推荐清单_路由器
- manjaro linux无线网卡,为 Manjaro 18.1.4 配置无线网卡
- 三相维也纳pfc,开关电源,三相AC输入无桥pfc±400vDC输出
- android相册制作,如何用手机制作音乐相册 安卓手机能不能制作音乐相册,手机制作音乐相册的方法...
- pyecharts各省人口GDP可视化分析
- Windows蓝牙设备自动断开问题
- 语音专题第一讲,麦克风阵列的语音信号处理技术
热门文章
- ai ci ba logon use infomation
- 包头昆区多大面积_两套楼房,放了整整19车垃圾!包头这对母女的“特殊癖好”,让邻居彻底不能忍了.........
- flannel源码分析--main
- DPDK rte_mbuf
- OVS DPDK vs OVS Deep Dive(十六)
- OVS端口镜像(十四)
- 网络编程--connect()、listen()、accept()
- PM-Summit 2019全球产品经理大会北京站即将开幕!
- Docker、Kubernetes、Apache Mesos 之争 | 一个与传说不同的故事
- PHP的htmlspecialchars、strip_tags、addslashes解释