欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言實(shí)現(xiàn)計(jì)算雙色球的中獎(jiǎng)率

 更新時(shí)間:2022年12月09日 15:31:44   作者:編程小魚(yú)六六六  
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)計(jì)算雙色球的中獎(jiǎng)率,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

規(guī)則

“雙色球”每注投注號(hào)碼由 6 個(gè)紅色球號(hào)碼和 1 個(gè)藍(lán)色球號(hào)碼組成。紅色球號(hào)碼從 1--33 中選擇;藍(lán)色球號(hào)碼從 1--16 中選擇。“雙色球”每注 2 元??偠灾?,就是從 1-33 個(gè)數(shù)中選擇 6 個(gè)數(shù),再?gòu)?1-16 個(gè)數(shù)中選擇 1 個(gè)數(shù)。中獎(jiǎng)的條件如下:

編寫(xiě)思路

編寫(xiě)該程序我使用了結(jié)構(gòu)體數(shù)組。如果這個(gè)號(hào)碼被選中,就會(huì)被標(biāo)記,下次就不會(huì)選擇。選擇我使用了隨機(jī)數(shù)生成,并且隨機(jī)種子使用了毫秒級(jí)別,防止短時(shí)間內(nèi)產(chǎn)生兩相同的數(shù)。

首先生成一組雙色球中獎(jiǎng)號(hào)碼。然后用循環(huán)隨機(jī)生成 N 組購(gòu)買號(hào)碼,使用購(gòu)買號(hào)碼與中獎(jiǎng)號(hào)碼進(jìn)行對(duì)比來(lái)確定是否中獎(jiǎng),以及中獎(jiǎng)等級(jí),然后計(jì)算中獎(jiǎng)金額,將中獎(jiǎng)的總次數(shù)除以購(gòu)買的次數(shù),就可以計(jì)算出中獎(jiǎng)率,如果次數(shù)不夠,計(jì)算出來(lái)的就不準(zhǔn)確,我使用 1000000 次,可以模擬出中獎(jiǎng)率在 6.7% 左右。但是中一等獎(jiǎng)的概率是幾乎沒(méi)有。

感興趣的同學(xué)可以將多試幾次看能否出現(xiàn)一等獎(jiǎng)。

運(yùn)行結(jié)果

源碼

// 程序功能:雙色球中獎(jiǎng)率計(jì)算
// 編譯環(huán)境:VS2013
// 結(jié)    論:中獎(jiǎng)率為 6.7%
 
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<sys/timeb.h>
 
struct RED
{
  bool IS_CHOSE;
  int number;
};
 
struct BLUE
{
  bool IS_CHOSE;
  int number;
};
 
void initBALL(RED *red, BLUE *blue);
void printfZJ(RED *red, BLUE *blue);
int printfZT(RED *red, BLUE *blue, RED *myred, BLUE *myblue);
 
int main()
{
  struct timeb timeSeed;
  ftime(&timeSeed);
  srand(timeSeed.time * 1000 + timeSeed.millitm);
  printf("彩票中獎(jiǎng)號(hào)碼為:\n");
  RED red[33];
  BLUE blue[16];
  initBALL(red, blue);
  printfZJ(red, blue);
  int CS = 1000000;  // 購(gòu)買次數(shù)
  int ZERO = 0;
  int ONE = 0;
  int TWO = 0;
  int THREE = 0;
  int FOUR = 0;
  int FIVE = 0;
  int SIX = 0;
  for (int i = 0; i < CS; i++)
  {
    //printf("購(gòu)買的彩票號(hào)碼為:\n");
    RED myred[33];
    BLUE myblue[16];
    initBALL(myred, myblue);
    //printfZJ(myred, myblue);
    int DJ = printfZT(red, blue, myred, myblue);
    switch (DJ)
    {
    case 0:ZERO++; break;
    case 1:ONE++; break;
    case 2:TWO++; break;
    case 3:THREE++; break;
    case 4:FOUR++; break;
    case 5:FIVE++; break;
    case 6:SIX++; break;
    }
  }
 
  printf("總共選擇%d次\n", CS);
  printf("沒(méi)中獎(jiǎng)%d次\n", ZERO);
  printf("一等獎(jiǎng)%d次\n", ONE);
  printf("二等獎(jiǎng)%d次\n", TWO);
  printf("三等獎(jiǎng)%d次\n", THREE);
  printf("四等獎(jiǎng)%d次\n", FOUR);
  printf("五等獎(jiǎng)%d次\n", FIVE);
  printf("六等獎(jiǎng)%d次\n", SIX);
  int outmoney = CS * 2;
  int inmoney = SIX * 5 + FIVE * 10 + FOUR * 200 + THREE * 3000 + TWO * 341021 + ONE * 10000000;
  printf("共耗資%d元,中獎(jiǎng)%d元,虧損%d元\n", outmoney, inmoney, outmoney - inmoney);
  int ZJ = CS - ZERO;
  double ZJL = (ZJ*1.0) / CS * 100;
  printf("中獎(jiǎng)率為:%lf", ZJL);
  _getch();
  return 0;
}
void initBALL(RED *red, BLUE *blue)
{
  for (int i = 0; i < 33; i++)
  {
    red[i].IS_CHOSE = false;
    red[i].number = i + 1;
  }
  for (int i = 0; i < 16; i++)
  {
    blue[i].IS_CHOSE = false;
    blue[i].number = i + 1;
  }
  for (int i = 0; i < 6; i++)
  {
    while (true)
    {
      int NUM = rand() % 33 + 1;
      if (red[NUM - 1].IS_CHOSE)
      {
        continue;
      }
      else
      {
        red[NUM - 1].IS_CHOSE = true;
        red[NUM - 1].number = NUM;
        break;
      }
    }
  }
  int NUM = rand() % 16 + 1;
  blue[NUM - 1].IS_CHOSE = true;
  /*blue[NUM - 1].number=NUM;*/
}
 
void printfZJ(RED *red, BLUE *blue)
{
  printf("紅色球?yàn)閈n");
  for (int i = 0; i < 33; i++)
  {
    if (red[i].IS_CHOSE)
    {
      printf("%d\t", red[i].number);
    }
  }
  printf("\n");
  printf("藍(lán)色號(hào)為:\n");
  for (int i = 0; i < 16; i++)
  {
    if (blue[i].IS_CHOSE)
    {
      printf("%d\t\n", blue[i].number);
    }
  }
}
 
int printfZT(RED *red, BLUE *blue, RED *myred, BLUE *myblue)
{
  int rednumber = 0;
  int bluenumber = 0;
  for (int i = 0; i < 33; i++)
  {
    if (red[i].IS_CHOSE)
    {
      for (int j = 0; j < 33; j++)
      {
        if (myred[j].IS_CHOSE)
        {
          if (red[i].number == myred[j].number)
          {
            rednumber++;
            break;
          }
        }
      }
    }
  }
  for (int i = 0; i < 16; i++)
  {
    if (blue[i].IS_CHOSE)
    {
      for (int j = 0; j < 16; j++)
      {
        if (myblue[j].IS_CHOSE)
        {
          if (blue[i].number == myblue[j].number)
          {
            bluenumber++;
            break;
          }
        }
      }
      break;
    }
  }
  //printf("紅色中%d\t藍(lán)色中%d\n",rednumber,bluenumber);
  int DJ = 0;
  if (rednumber == 6 && bluenumber == 1)
  {
    DJ = 1;
  }
  if (rednumber == 6 && bluenumber == 0)
  {
    DJ = 2;
  }
  if (rednumber == 5 && bluenumber == 1)
  {
    DJ = 3;
  }
  if (rednumber == 5 && bluenumber == 0)
  {
    DJ = 4;
  }
  if (rednumber == 4 && bluenumber == 1)
  {
    DJ = 4;
  }
  if (rednumber == 4 && bluenumber == 0)
  {
    DJ = 5;
  }
  if (rednumber == 3 && bluenumber == 1)
  {
    DJ = 5;
  }
  if ((rednumber == 2 && bluenumber == 1) || (rednumber == 1 && bluenumber == 1) || (rednumber == 0 && bluenumber == 1))
  {
    DJ = 6;
  }
  return DJ;
}

到此這篇關(guān)于C語(yǔ)言實(shí)現(xiàn)計(jì)算雙色球的中獎(jiǎng)率的文章就介紹到這了,更多相關(guān)C語(yǔ)言計(jì)算雙色球中獎(jiǎng)率內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評(píng)論