硬币抛掷模拟(使用数组)
2011-04-25 23:08
330 查看
如果抛掷硬币N次,看到头像的期望值是N/2次,但实际值也可能是0~N次,以下程序进行M次试验,M和N都从命令行获取。它使用一个数组f来跟踪出现“i次头像”的概率,其中0<=i<=N。然后打印试验结果的柱状图。
#include <stdlib.h>
#include <stdio.h>
int heads()
{ return rand() < RAND_MAX/2; }
main(int argc, char *argv[])
{ int i, j, cnt;
int N = atoi(argv[1]), M = atoi(argv[2]);
int *f = malloc((N+1)*sizeof(int));
for (j = 0; j <= N; j++) f[j] = 0;
for (i = 0; i < M; i++, f[cnt]++)
for (cnt = 0, j = 0; j <= N; j++)
if (heads()) cnt++;
for (j = 0; j <= N; j++)
{
printf("%2d ", j);
for (i = 0; i < f[j]; i+=10) printf("*");
printf("\n");
}
}
#include <stdlib.h>
#include <stdio.h>
int heads()
{ return rand() < RAND_MAX/2; }
main(int argc, char *argv[])
{ int i, j, cnt;
int N = atoi(argv[1]), M = atoi(argv[2]);
int *f = malloc((N+1)*sizeof(int));
for (j = 0; j <= N; j++) f[j] = 0;
for (i = 0; i < M; i++, f[cnt]++)
for (cnt = 0, j = 0; j <= N; j++)
if (heads()) cnt++;
for (j = 0; j <= N; j++)
{
printf("%2d ", j);
for (i = 0; i < f[j]; i+=10) printf("*");
printf("\n");
}
}
相关文章推荐
- 29、数据结构笔记之二十九数组之硬币抛掷模拟
- 在flash lite1.1中使用字符串模拟 数组
- MTK 使用数组模拟动态内存分配
- bfs 数组模拟栈的使用
- 使用数组模拟邻接表
- 用泛型实现在数组模拟入栈出栈时多类型的使用
- JAVA使用数组简单模拟队列
- java中使用数组进行模拟加密的方法
- 在java中使用数组进行模拟加密
- 从头认识java-15.7 Map(1)-使用数组来简单模拟Map的创建
- 使用数组模拟符号表的程序
- UVA11988(破损键盘) 使用数组模拟链表插入
- josephus Problem 中级(使用数组模拟链表,提升效率)
- C/C++:使用数组模拟链表
- 15.使用数组模拟栈
- 使用数组模拟链表
- josephus Problem 中级(使用数组模拟链表,提升效率)
- bash shell数组模拟队列queue和shell数组使用技巧
- 使用数组来模拟邻接表存储图信息
- bash shell数组模拟队列queue和shell数组使用技巧