C語言實現(xiàn)計算雙色球的中獎率
規(guī)則
“雙色球”每注投注號碼由 6 個紅色球號碼和 1 個藍色球號碼組成。紅色球號碼從 1--33 中選擇;藍色球號碼從 1--16 中選擇。“雙色球”每注 2 元??偠灾?,就是從 1-33 個數(shù)中選擇 6 個數(shù),再從 1-16 個數(shù)中選擇 1 個數(shù)。中獎的條件如下:

編寫思路
編寫該程序我使用了結(jié)構(gòu)體數(shù)組。如果這個號碼被選中,就會被標(biāo)記,下次就不會選擇。選擇我使用了隨機數(shù)生成,并且隨機種子使用了毫秒級別,防止短時間內(nèi)產(chǎn)生兩相同的數(shù)。
首先生成一組雙色球中獎號碼。然后用循環(huán)隨機生成 N 組購買號碼,使用購買號碼與中獎號碼進行對比來確定是否中獎,以及中獎等級,然后計算中獎金額,將中獎的總次數(shù)除以購買的次數(shù),就可以計算出中獎率,如果次數(shù)不夠,計算出來的就不準(zhǔn)確,我使用 1000000 次,可以模擬出中獎率在 6.7% 左右。但是中一等獎的概率是幾乎沒有。
感興趣的同學(xué)可以將多試幾次看能否出現(xiàn)一等獎。
運行結(jié)果

源碼
// 程序功能:雙色球中獎率計算
// 編譯環(huán)境:VS2013
// 結(jié) 論:中獎率為 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("彩票中獎號碼為:\n");
RED red[33];
BLUE blue[16];
initBALL(red, blue);
printfZJ(red, blue);
int CS = 1000000; // 購買次數(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("購買的彩票號碼為:\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("沒中獎%d次\n", ZERO);
printf("一等獎%d次\n", ONE);
printf("二等獎%d次\n", TWO);
printf("三等獎%d次\n", THREE);
printf("四等獎%d次\n", FOUR);
printf("五等獎%d次\n", FIVE);
printf("六等獎%d次\n", SIX);
int outmoney = CS * 2;
int inmoney = SIX * 5 + FIVE * 10 + FOUR * 200 + THREE * 3000 + TWO * 341021 + ONE * 10000000;
printf("共耗資%d元,中獎%d元,虧損%d元\n", outmoney, inmoney, outmoney - inmoney);
int ZJ = CS - ZERO;
double ZJL = (ZJ*1.0) / CS * 100;
printf("中獎率為:%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("紅色球為\n");
for (int i = 0; i < 33; i++)
{
if (red[i].IS_CHOSE)
{
printf("%d\t", red[i].number);
}
}
printf("\n");
printf("藍色號為:\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藍色中%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語言實現(xiàn)計算雙色球的中獎率的文章就介紹到這了,更多相關(guān)C語言計算雙色球中獎率內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言實現(xiàn)學(xué)生信息管理系統(tǒng)(多文件)
這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12

