模拟抛硬币(C语言实现)
实现代码:
#include<stdio.h>
#include<stdlib.h> int heads()
{
return rand() < RAND_MAX/;
} int main(int argc, char *argv[])
{
int i,j,cnt;
int N = atoi(argv[]), M = atoi(argv[]);
int *f = malloc((N+)*sizeof(int)); for(j=; j<=N; j++) f[j] = ;
for(i=; i<M; i++, f[cnt]++)
for(cnt=, j=; j<N; j++)//j<=N on book.
if(heads())cnt++; for(j=; j<=N; j++)
{
printf("%2d ", j);
for(i=; i<f[j]; i+=) printf("*");
printf("\n");
} system("pause");
return ;
}
该程序引自《算法:C语言实现(第1~4部分)》,主要学习基于计算出的值作为数组索引的操作。
第17行代码中注释处为做的修改,原书中为j<=N,我认为应该为j<N,否则假如heads()的返回值一直为真即抛硬币结果永远为正面,则参数cnt的值最后结果为N+1, 超出最大可能出现的次数。
将代码保存为coin.c,编译生成coin.exe. 假设模拟1000次的“抛硬币32次”,即N=32,M=1000,通过命令行向main()函数传递这两个参数并执行,结果如下:
D:\>coin.exe 32 1000
6 *
7 *
8 *
9 *
10 **
11 ****
12 ******
13 ********
14 ************
15 *************
16 **************
17 *************
18 *************
19 ********
20 ******
21 ***
22 *
23 *
24 *
25 *
请按任意键继续. . .
图中每个星号代表10次出现正面。
假设模拟10000次的“抛硬币32次”,即N=32,M=10000,并将代码中第23行i+=10改为i+=20后重新编译生成coin.exe,通过命令行向main()函数传递N、M两个参数并执行,其结果如下:
D:\>coin.exe 32 10000
0
1
2
3
4
5
6 *
7 *
8 **
9 ****
10 *********
11 ***************
12 ****************************
13 ****************************************
14 *****************************************************
15 ********************************************************************
16 ***************************************************************************
17 ******************************************************************
18 *********************************************************
19 ****************************************
20 **************************
21 *************
22 ********
23 ***
24 *
25 *
26 *
27
28 *
29
30
31
32
请按任意键继续. . .
参考文献:《算法:C语言实现(第1~4部分)》,机械工业出版社,2011.8
模拟抛硬币(C语言实现)的更多相关文章
- [CSP-S模拟测试]:抛硬币(DP)
题目背景 小$A$和小$B$是一对好朋友,他们经常一起愉快的玩耍.最近小$B$沉迷于**师手游,天天刷本,根本无心搞学习.但是小$B$已经入坑了几个月,却一次都没有抽到$SSR$,让他非常怀疑人生.勤 ...
- HZOI20190908模拟40 队长快跑,影魔,抛硬币 题解
题面:https://www.cnblogs.com/Juve/articles/11487699.html 队长快跑: 权值线段树与dp yy的不错 #include<iostream> ...
- NOIP模拟14「队长快跑·影魔·抛硬币」
T1:队长快跑 基本思路: 离散化·DP·数据结构优化DP 这三个我都没想到....气死. 定义状态数组:\(c[i][j]\)表示在i时最小的a值是j时可以摧毁的最多的水晶数. 那么 ...
- js模拟抛出球运动
js练手之模拟水平抛球运动 -匀加速运动 -匀减速运动 模拟运动有些基本的思路,当前所在点的坐标,元素的长宽是多少,向右/向下运动x/y增加,向上/向左运动x/y减少,运动的路程是多少,用什么方程进行 ...
- bzoj 4830: [Hnoi2017]抛硬币 [范德蒙德卷积 扩展lucas]
4830: [Hnoi2017]抛硬币 题意:A投a次硬币,B投b次硬币,a比b正面朝上次数多的方案数,模\(10^k\). \(b \le a \le b+10000 \le 10^{15}, k ...
- [HNOI 2017]抛硬币
Description 题库链接 两人抛硬币一人 \(a\) 次,一人 \(b\) 次.记正面朝上多的为胜.问抛出 \(a\) 次的人胜出的方案数. \(1\le a,b\le 10^{15},b\l ...
- bzoj 4830: [Hnoi2017]抛硬币
Description 小A和小B是一对好朋友,他们经常一起愉快的玩耍.最近小B沉迷于**师手游,天天刷本,根本无心搞学习.但是 已经入坑了几个月,却一次都没有抽到SSR,让他非常怀疑人生.勤勉的小A ...
- [AH/HNOI2017]抛硬币
题目描述 小 A 和小 B 是一对好朋友,他们经常一起愉快的玩耍.最近小 B 沉迷于**师手游,天天刷本,根本无心搞学习.但是已经入坑了几个月,却一次都没有抽到 SSR,让他非常怀疑人生.勤勉的小 A ...
- bzoj4830 hnoi2017 抛硬币
题目描述 小 A 和小 B 是一对好朋友,他们经常一起愉快的玩耍.最近小 B 沉迷于**师手游,天天刷本,根本无心搞学习.但是已经入坑了几个月,却一次都没有抽到 SSR,让他非常怀疑人生.勤勉的小 A ...
随机推荐
- Data Structure 之 KMC字符串匹配算法
有关模式函数值next[i]确实有很多版本啊,在另外一些面向对象的算法描述书中也有失效函数 f(j)的说法,其实是一个意思,即next[j]=f(j-1)+1,不过还是next[j]这种表示法好理解啊 ...
- 【阿里云产品公测】弹性伸缩服务ESS之试用初体验
弹性伸缩服务ESS之试用初体验 作者:云郎 2014/10/15 阿里云弹性伸缩服务(Elastic Scaling Service)是根据用户的业务需求和策略,自动调整其弹性计算服务器(ECS)的管 ...
- mongodb 安装为windows服务
mongodb 安装为windows服务: 以管理员身份运行下面的命令: mongod --install --rest --dbpath e:\data\mongo --logpath e:\dat ...
- Redis入门(优势,环境,字符串,哈希,列表)
Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的 ...
- .net MVC 下载文件乱码问题解决方案
public ActionResult OverAllSummaryExport(string id) { #region 解决中文乱码 Response.HeaderEncoding = Encod ...
- POJ 2492 A Bug's Life (并查集)
A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 30130 Accepted: 9869 De ...
- 转:鏖战双十一-阿里直播平台面临的技术挑战(webSocket, 敏感词过滤等很不错)
转自:http://www.infoq.com/cn/articles/alibaba-broadcast-platform-technology-challenges 鏖战双十一-阿里直播平台面临的 ...
- 在ios7系统下,scrollView下移20像素
从设备图库返回到scrollView时,scrollView会下移20像素,解决办法:self.edgesForExtendedLayout = UIRectEdgeNone; 如果加入此代码导致其他 ...
- css奇特用法之 IMG添加背景图片配合显示--效果惊艳
IMG标签本身是显示图片的,但通过CSS可以再为其设置背景图片,让其和自身的图片配合来显示,最终的效果会让你惊叹.当然,这个发现来自于老外,所以代码马上与大家分享.再此之前,我也从来没有想到过这个思路 ...
- .net导出Word的一种方法
由于ActiveX控件只支持IE(好像FF可以通过安装插件支持),所以js导出word的方式就比较局限 可是如果当页面经过js修改以后,.net是无法获取到的,所以要通过js获取到最新的html并传给 ...