2018-03-22
骰子点数概率问题 要求:掷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;
i...全部
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");
} 。收起