骰子点数概率问题
作者:monface 来源:新浪爱问 日期:2008-04-21
要求:掷10000次,输出6个点数出现的次数和概率
没有错 但是结果不对
请指教
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void main()
{
float num1, num2, num3, num4, num5, num6, i;
int number;
float f1, f2, f3, f4 ,f5 ,f6;
printf("\n\n\n这是一个掷骰子的程序\n");
printf("\n\n在10000次的掷骰子中\n");
srand((unsigned)time( NULL ));
for(i=1;i<=10000;i )
{
number = rand() % 6 1;
if(number==1)
{
num1=num1 1;
}
if(number==2)
{
num2=num2 1;
}
if(number==3)
{
num3=num3 1;
}
if(number==4)
{
num4=num4 1;
}
if(number==5)
{
num5=num5 1;
}
if(number==6)
{
num6=num6 1;
}
}
f1=num1/10000;
f2=num2/10000;
f3=num3/10000;
f4=num4/10000;
f5=num5/10000;
f6=num6/10000;
printf("\n\n点1出现了%d次,",num1);
printf("出现频率%f",f1);
printf("\n\n点2出现了%d次,",num2);
printf("出现频率%f",f2);
printf("\n\n点3出现了%d次,",num3);
printf("出现频率%f",f3);
printf("\n\n点4出现了%d次,",num4);
printf("出现频率%f",f4);
printf("\n\n点5出现了%d次,",num5);
printf("出现频率%f",f5);
printf("\n\n点6出现了%d次,",num6);
printf("出现频率%f",f6);
printf("\n\n\n");
}
电脑问题网给出的最佳答案
1)程序在运行后结果是一些意想不到的我执行后结果是负数,原因就是你没有为num1-num6付初值,所以他们是随机产生的。
2)付了初值以后所有结果都是0,原因是num1-num5还有i都是整数,而你让他们为float,所以产生了错误。改过后的程序如下:
//#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void main()
{
int num1, num2, num3, num4, num5, num6;
num1=num2=num3=num4=num5=num6=0;
int number, i;
float f1, f2, f3, f4 ,f5 ,f6;
printf("\n\n\n这是一个掷骰子的程序\n");
printf("\n\n在10000次的掷骰子中\n");
srand((unsigned)time( NULL ));
for(i=1;i<=10000;i )
{
number = rand() % 6 1;
if(number==1)
{
num1=num1 1;
}
if(number==2)
{
num2=num2 1;
}
if(number==3)
{
num3=num3 1;
}
if(number==4)
{
num4=num4 1;
}
if(number==5)
{
num5=num5 1;
}
if(number==6)
{
num6=num6 1;
}
}
f1=(float)num1/10000;
f2=(float)num2/10000;
f3=(float)num3/10000;
f4=(float)num4/10000;
f5=(float)num5/10000;
f6=(float)num6/10000;
printf("\n\n点1出现了%d次,",num1);
printf("出现频率%f",f1);
printf("\n\n点2出现了%d次,",num2);
printf("出现频率%f",f2);
printf("\n\n点3出现了%d次,",num3);
printf("出现频率%f",f3);
printf("\n\n点4出现了%d次,",num4);
printf("出现频率%f",f4);
printf("\n\n点5出现了%d次,",num5);
printf("出现频率%f",f5);
printf("\n\n点6出现了%d次,",num6);
printf("出现频率%f",f6);
printf("\n\n\n");
}
其他回答
程序设计上没有什么问题。但有三点需要改一下。
1.num1...num6这六个变量只是记录出现的次数。故不能用浮点数,应该 用整型,如int ,UINT
2.一般在变量初次使用之前应该初始化。这是一个很好的习惯。
int num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0, num6 = 0, i;
3.刚才把num1等改成了整形,
f1=num1/10000; ->f1=(float)num1/10000; //强制转换成浮点数