爱问知识人 爱问教育 医院库

骰子点数概率问题

首页

骰子点数概率问题

要求:掷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");


}

提交回答
好评回答
  • 2008-04-17 21:59:38
      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"); } 。

    紫***

    2008-04-17 21:59:38

其他答案

    2008-04-17 02:37:41
  • 程序设计上没有什么问题。但有三点需要改一下。
    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; //强制转换成浮点数

    沉***

    2008-04-17 02:37:41

类似问题

换一换
  • VC++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):