谁有 九宫格抽奖的源码 注意:是可以设置抽奖概率的

谁有 九宫格抽奖的源码 注意:是可以设置抽奖概率的,第1张

你是什么用途?

a如果抽奖内容价值比较大,得考虑到算法的安全性,保证绝对的概率,也就是能**一样,如果是100W的大奖,不能重复出现好几次。计算机的随机概率是不稳定的,所以需要一套完整的算法来保持概率,进行矫正和干预。 上面说道的是随机概率。

b如果是奖池形的,就需要用维护奖池的算法来实现,比如1等奖10个 二等奖 100个 三等奖 1000个,10W的不中奖,这就形成了你的奖池,你每次抽奖是从这个池中取到一个号码,为了维护中奖率,你需要再拿走一个号码以后再给奖池补充一个新的号码。

c总之这是一个非常复杂的过程,建议你使用国家的开奖中心的数据来维护你自己的抽奖内容,抽奖中心给的内容算法是完整的,你取到她们算出的结果当作你们计算的依据。

如果是简单实现,不考虑后果的话,你可以去前端源码下载站就能轻松找到源码

以上是我个人观点,如果错误,敬请原谅。

这个拍版好难用

代码如下,已测试通过:

int main()

{

int no,ret;

printf("请输入你猜测的号码:\n");

scanf("%d",&no);

ret=rand()%10;

printf("本次开奖结果=[%d]:\n",ret);

if(no==ret)

{

printf("恭喜你猜中了,中奖10元!\n");

}

else

{

printf("很遗憾,再来一次吧!\n");

}

return 0;

}

可以把上面代码改成多次输入,即将输入和取随机数都放在while循环中。自己修改下吧

Dim n As Integer

Dim a()

Private Sub Command1_Click()

    If n = 0 Then            '第一次点击时执行

        m = Val(Text1)

        ReDim a(1 To m)

        For i = 1 To m      '生成数组a,元素为1至m这m个数

            a(i) = i

        Next

        For i = 1 To m - 1             '随机打乱数组a中元素

            r = Int(Rnd  m + 1)

            tmp = a(i)

            a(i) = a(r)

            a(r) = tmp

        Next

    End If

    n = n + 1                 '计数点击次数

    If n > Val(Text1) Then    '次数超过指定次数,抽奖结束

        MsgBox "抽奖结束!"

        Exit Sub

    End If

    Text2 = a(n)              '从数组中抽出第n个数,由于数组中是随机排列,所以相当于生成一个随机数,并且不会重复

End Sub

版本 2

支持库 xplib

支持库 iext

程序集 窗口程序集1

程序集变量 b, 文本型

程序集变量 框, 框

程序集变量 开始音乐, 字节集

程序集变量 结束音乐, 字节集

程序集变量 人数, 整数型

程序集变量 人数数组, 文本型, , "0"

程序集变量 n, 整数型

程序集变量 文件数组, 文本型, , "0"

子程序 __启动窗口_创建完毕

XP风格 (#蓝色风格)

选择夹左边 = (取屏幕宽度 () - 选择夹宽度) ÷ 2

选择夹顶边 = (取屏幕高度 () - 选择夹高度) ÷ 2

框1标记 = “1”

框2标记 = “2”

框3标记 = “3”

框4标记 = “4”

框5标记 = “5”

框6标记 = “6”

选择夹现行子夹 = 1

透明标签1左边 = (取屏幕宽度 () - 透明标签1宽度) ÷ 2

选择夹2顶边 = 选择夹高度 + 选择夹顶边

选择夹2左边 = (取屏幕宽度 () - 选择夹2宽度) ÷ 2

初始化 ()

人数 = 取数组成员数 (文件数组)

_一个人_被选择 ()

注册热键程序 (_启动窗口取窗口句柄 (), 0, #F1键, &配置设置)

注册热键程序 (_启动窗口取窗口句柄 (), 0, #回车键, &子程序1)

注册热键程序 (_启动窗口取窗口句柄 (), 0, #键1, &_一个人_被选择)

注册热键程序 (_启动窗口取窗口句柄 (), 0, #键2, &_二个人_被选择)

注册热键程序 (_启动窗口取窗口句柄 (), 0, #键3, &_三个人_被选择)

注册热键程序 (_启动窗口取窗口句柄 (), 0, #键4, &_四个人_被选择)

注册热键程序 (_启动窗口取窗口句柄 (), 0, #键5, &_五个人_被选择)

注册热键程序 (_启动窗口取窗口句柄 (), 0, #键6, &_六个人_被选择)

注册热键程序 (_启动窗口取窗口句柄 (), 0, #Esc键, &_退出_被选择)

子程序 子程序1

n = n + 1

如果 (n % 2 = 0)

_按钮2_被单击 ()

否则

_按钮1_被单击 ()

如果结束

子程序 配置设置

载入 (系统设置窗口, , 真)

系统设置窗口可视 = 真

子程序 _时钟1_周期事件

置随机数种子 ()

框1 = 读入文件 (文件数组 [取随机数 (1, 人数)])

子程序 抽奖停

局部变量 a, 整数型

局部变量 i, 整数型

b = “”

置随机数种子 ()

计次循环首 (6, i)

a = 取随机数 (1, 人数)

判断循环首 (寻找文本 (b, 到文本 (a), 1, 假) ≠ -1)

a = 取随机数 (1, 人数)

判断循环尾 ()

框 = 取标记组件 (i)

框 = 读入文件 (文件数组 [a])

b = b + “,” + 到文本 (a)

计次循环尾 ()

子程序 _一个人_被选择

初始化 ()

n = 0

按钮1禁止 = 假

按钮1获取焦点 ()

框1可视 = 真

框2可视 = 假

框3可视 = 假

框4可视 = 假

框5可视 = 假

框6可视 = 假

框1左边 = (选择夹宽度 - 框1宽度) ÷ 2

子程序 _二个人_被选择

初始化 ()

n = 0

按钮1禁止 = 假

按钮1获取焦点 ()

框1可视 = 真

框2可视 = 真

框3可视 = 假

框4可视 = 假

框5可视 = 假

框6可视 = 假

框1左边 = (选择夹宽度 - 框1宽度 × 2 - 5) ÷ 2

框2左边 = 框1左边 + 框1宽度 + 5

子程序 _三个人_被选择

初始化 ()

n = 0

按钮1禁止 = 假

按钮1获取焦点 ()

框1可视 = 真

框2可视 = 真

框3可视 = 真

框4可视 = 假

框5可视 = 假

框6可视 = 假

框1左边 = 0

框2左边 = 325

框3左边 = 651

子程序 _四个人_被选择

初始化 ()

n = 0

按钮1禁止 = 假

按钮1获取焦点 ()

框1可视 = 真

框2可视 = 真

框3可视 = 真

框4可视 = 真

框5可视 = 假

框6可视 = 假

框1左边 = 0

框2左边 = 325

框3左边 = 651

子程序 _五个人_被选择

初始化 ()

n = 0

按钮1禁止 = 假

按钮1获取焦点 ()

框1可视 = 真

框2可视 = 真

框3可视 = 真

框4可视 = 真

框5可视 = 真

框6可视 = 假

框1左边 = 0

框2左边 = 325

框3左边 = 651

子程序 _六个人_被选择

初始化 ()

n = 0

按钮1禁止 = 假

按钮1获取焦点 ()

框1可视 = 真

框2可视 = 真

框3可视 = 真

框4可视 = 真

框5可视 = 真

框6可视 = 真

框1左边 = 0

框2左边 = 325

框3左边 = 651

子程序 初始化

局部变量 k, 整数型

选择夹现行子夹 = 1

选择夹现行子夹 = 0

时钟1时钟周期 = 0

时钟2时钟周期 = 0

时钟3时钟周期 = 0

时钟4时钟周期 = 0

时钟5时钟周期 = 0

时钟6时钟周期 = 0

_启动窗口背景音乐 = 到字节集 (0)

计次循环首 (6, k)

框 = 取标记组件 (k)

框 = #

计次循环尾 ()

子程序 _标题_被选择

局部变量 wb, 文本型

初始化 ()

输入框 (“请输入标题内容”, , , wb, )

透明标签1标题 = wb

写配置项 (取运行目录 () + “\configini”, “标题”, “标题1”, wb)

子程序 _设定转奖声音_被选择

初始化 ()

通用对话框1过滤器 = “WAV文件|wav”

通用对话框1打开 ()

开始音乐 = 读入文件 (通用对话框1文件名)

写配置项 (取运行目录 () + “\configini”, “声音”, “转奖声音”, 通用对话框1文件名)

子程序 _设定中奖声音_被选择

初始化 ()

通用对话框1过滤器 = “WAV文件|wav”

通用对话框1打开 ()

结束音乐 = 读入文件 (通用对话框1文件名)

写配置项 (取运行目录 () + “\configini”, “声音”, “中奖声音”, 通用对话框1文件名)

子程序 _关闭音乐_被选择

初始化 ()

_启动窗口背景音乐 = 到字节集 (0)

子程序 初始化

局部变量 d, 整数型

_启动窗口底图 = 读入文件 (读配置项 (取运行目录 () + “\configini”, “”, “背景”, 取运行目录 () + “\Wallpaper\1024jpg”))

开始音乐 = 读入文件 (读配置项 (取运行目录 () + “\configini”, “声音”, “转奖声音”, 取运行目录 () + “\sound\musiwav”))

结束音乐 = 读入文件 (读配置项 (取运行目录 () + “\configini”, “声音”, “中奖声音”, 取运行目录 () + “\sound\finishwav”))

透明标签1标题 = 读配置项 (取运行目录 () + “\configini”, “标题”, “标题1”, “XX公司幸运抽奖”)

计次循环首 (6, d)

框 = 取标记组件 (d)

框 = 读入文件 (读配置项 (取运行目录 () + “\configini”, “”, “抽奖”, 取运行目录 () + “\Wallpaper\cjjpg”))

计次循环尾 ()

查找文件 (文件数组, 取运行目录 () + “\Photos\”, “jpg”, )

查找文件 (文件数组, 取运行目录 () + “\Photos\”, “bmp”, )

如果真 (取数组成员数 (文件数组) < 6)

信息框 (“请把文件放到[Photots]文件夹下后重启软件!” + #换行符 + “文件格式支持[jpg bmp]”, 64, “提示:”)

结束 ()

如果真结束

子程序 _抽奖_被选择

局部变量 a, 整数型

初始化 ()

通用对话框1过滤器 = “文件|jpg;bmp”

通用对话框1打开 ()

计次循环首 (6, a)

框 = 取标记组件 (a)

框 = 读入文件 (通用对话框1文件名)

计次循环尾 ()

写配置项 (取运行目录 () + “\configini”, “”, “抽奖”, 通用对话框1文件名)

子程序 _时钟2_周期事件

置随机数种子 ()

框2 = 读入文件 (文件数组 [取随机数 (1, 人数)])

子程序 _时钟3_周期事件

置随机数种子 ()

框3 = 读入文件 (文件数组 [取随机数 (1, 人数)])

子程序 _时钟4_周期事件

置随机数种子 ()

框4 = 读入文件 (文件数组 [取随机数 (1, 人数)])

子程序 _时钟5_周期事件

置随机数种子 ()

框5 = 读入文件 (文件数组 [取随机数 (1, 人数)])

子程序 _时钟6_周期事件

置随机数种子 ()

框6 = 读入文件 (文件数组 [取随机数 (1, 人数)])

子程序 _退出_被选择

结束 ()

子程序 _时钟7_周期事件

' 如果 (取鼠标垂直位置 () < 10)

系统设定可视 = 真

设定抽奖人数可视 = 真

' 系统设定可视 = 假

' 设定抽奖人数可视 = 假

子程序 _按钮1_被单击, 逻辑型

如果真 (选择夹现行子夹 = 1)

选择夹现行子夹 = 0

如果真结束

_启动窗口背景音乐 = 开始音乐

_启动窗口播放次数 = 0

时钟1时钟周期 = 100

时钟2时钟周期 = 100

时钟3时钟周期 = 100

时钟4时钟周期 = 100

时钟5时钟周期 = 100

时钟6时钟周期 = 100

按钮2禁止 = 假

按钮1禁止 = 真

按钮2获取焦点 ()

返回 (真)

子程序 _按钮2_被单击

抽奖停 ()

_启动窗口背景音乐 = 结束音乐

_启动窗口播放次数 = 1

时钟1时钟周期 = 0

时钟2时钟周期 = 0

时钟3时钟周期 = 0

时钟4时钟周期 = 0

时钟5时钟周期 = 0

时钟6时钟周期 = 0

按钮2禁止 = 真

按钮1禁止 = 假

按钮1获取焦点 ()

一、界面设计

新建一个标准的exe工程。在form1窗体中放置一个定时器(timer1)、两个文本框(label1,label2)、两个命令按钮(command1,command2)和包含7个元素的控件数组(label3(0)—label3(6))。

二、属性设置

label3控件数组中的所有元素皆采用相同设置。

三、代码编写

本程序的实现原理是:当用户单击“开始”按钮时,打开定时器,利用定时器控件同时产生两个随机数sj1、sj2,sj1的范围是1~32,sj2的范围是0~49。当sj1=24的时侯,用sj2与前面产生的中奖号码作比较,若与前面的中奖相同,则退出本过程;若与前面的中奖号码不同,则将此随机数作为中奖号码。当产生了7个中奖号码时,关闭定时器控件,停止产生随机数。

本程序用到的函数简介:

(1)randomize:初始化随机数的种子数。

(2)int():返回一个非整形数字取整后的整数。

(3)rnd:产生一个0~1之间的随机数(大于等于0,但小于1)。

(4)qbcolor():返回参数(0~15)对应的颜色。

(5)val:将一个字符形变量转化为一个数值型变量。

(6)format:格式化一个表达式。

以下是程序的完整代码:

dim sy as integer

′命令按钮1的单击事件

private sub command1_click()

′清除label3控件数组的内容

for i=0 to 6

label3(i)caption=″″

next

timer1enabled=true′打开定时器

command1enabled=false′使开始按钮失效

sy=-1′索引值初始化为-1

end sub

′命令按钮2的单击事件

在定义函数时有时在语句前,有的在语句后。

希望能帮到你!

// giftDlgh : header file

//

#if !defined

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

// CGiftDlg dialog

class CGiftDlg : public CDialog

{

// Construction

public:

int FreeMem();

int ReSetData();

int InitData(); //初始化数组

CGiftDlg(CWnd pParent = NULL); // standard constructor

char code[1000];//指向身份z号数组的指针

char name[1000];//指向姓名数组的指针

char data[1000]; //随机数组

int ptr; //进度条当前指向随机数组的指针

int totalid; //参加抽奖的id总数,如果抽出一个,自减1

bool bstart; //标记进度条是否在滚动

// Dialog Data

//{{AFX_DATA(CGiftDlg)

enum { IDD = IDD_GIFT_DIALOG };

CButton m_btgo;

CString m_code;

CString m_msg;

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CGiftDlg)

protected:

virtual void DoDataExchange(CDataExchange pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

HICON m_hIcon;

// Generated message map functions

//{{AFX_MSG(CGiftDlg)

virtual BOOL OnInitDialog();

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

virtual void OnOK();

afx_msg void OnTimer(UINT nIDEvent);

afx_msg void OnCancelMode();

virtual void OnCancel();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line

#endif // !defined(AFX_GIFTDLG_H__21D8D4EF_07F4_4F29_9351_78F99BFF7723__INCLUDED_)

// giftDlgcpp : implementation file

//

#include "stdafxh"

#include "gifth"

#include "giftDlgh"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

// CGiftDlg dialog

CGiftDlg::CGiftDlg(CWnd pParent /=NULL/)

: CDialog(CGiftDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CGiftDlg)

m_code = _T("");

m_msg = _T("");

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CGiftDlg::DoDataExchange(CDataExchange pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CGiftDlg)

DDX_Control(pDX, IDOK, m_btgo);

DDX_Text(pDX, IDC_STATIC_CODE2, m_code);

DDX_Text(pDX, IDC_STATIC_MSG, m_msg);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CGiftDlg, CDialog)

//{{AFX_MSG_MAP(CGiftDlg)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_WM_TIMER()

ON_WM_CANCELMODE()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

// CGiftDlg message handlers

BOOL CGiftDlg::OnInitDialog()

{

CDialog::OnInitDialog();

InitData();

bstart=false;

// Set the icon for this dialog The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

m_msgFormat ("按开始键开始滚动,抽奖箱中人数:%d",totalid);

UpdateData(FALSE);

return TRUE; // return TRUE unless you set the focus to a control

}

// the minimized window

HCURSOR CGiftDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CGiftDlg::OnOK()

{

// TODO: Add extra validation here

if(bstart)

{

KillTimer(1);

bstart=false;

m_msgFormat ("按开始键开始滚动,抽奖箱中人数:%d",totalid-1);

m_codeFormat ("抽出的号码:%s\n姓名:%s",code[data[ptr]],name[data[ptr]]);

//AfxMessageBox(m_code);

ReSetData();//剔除抽出的号码,重新打乱

if(totalid<1)

{

m_btgoEnableWindow (FALSE);

}

m_btgoSetWindowText ("开始");

}

else

{

SetTimer(1, 100,NULL);

bstart=true;

m_msgFormat ("按停止键抽一个奖");

m_btgoSetWindowText ("停止");

}

UpdateData(FALSE);

//CDialog::OnOK();

}

void CGiftDlg::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

m_codeFormat ("现在的号码:%s",code[data[ptr]]);

UpdateData(FALSE);

ptr++;

ptr%=totalid;

CDialog::OnTimer(nIDEvent);

}

void CGiftDlg::OnCancelMode()

{

CDialog::OnCancelMode();

// TODO: Add your message handler code here

}

int CGiftDlg::InitData()

{

FILE fp=fopen("idtxt","r");

ptr=0;

totalid=1;

if (fp==NULL)

{

return 0;

}

char buf[80];

int line=0;

while(!feof(fp))

{

char p=fgets(buf,80,fp);

if (p!=NULL)

{

name[line]=(char)malloc(80);

code[line]=(char)malloc(80);

memset(code[line],0,80);

memset(name[line],0,80);

int flag=0;

for(int i=0;i<80&&buf[i]!='\0';i++)

{

if((buf[i]!=',' )&& (flag==0))

{

code[line][i]=buf[i];

}

else if(flag==0)

{

flag=i;

}

else if((buf[i]!=',' )&& (flag!=0))

{

name[line][i-flag-1]=buf[i];

}

}

TRACE("%s-%s",code[line],name[line]);

memset(buf,0,80);

line++;

}

}

fclose(fp);

for(int j=0;j<line;j++)

{

data[j]=j;

}

for(int i=0;i<line;i++)

{

int pos=rand()%(line-i)+i;

int temp=data[i];

data[i]=data[pos];

data[pos]=temp;

TRACE("%d",data[i]);

}

totalid=line;

return 1;

}

int CGiftDlg::ReSetData()

{

//ptr剔除,与最后一个交换,然后释放内存

int line=totalid;

int temp=data[ptr];

data[ptr]=data[line-1];

data[line-1]=temp;

//AfxMessageBox(name[data[line-1]]);

free(code[data[line-1]]);

free(name[data[line-1]]);

totalid--;

line--;

ptr=0;

for(int i=0;i<line;i++)//重新打乱

{

int pos=rand()%(line-i)+i;

int temp=data[i];

data[i]=data[pos];

data[pos]=temp;

TRACE("%d",data[i]);

}

return 1;

}

int CGiftDlg::FreeMem()

{

int line=totalid;

for(int i=0;i<line;i++)

{

free(code[i]);

free(name[i]);

}

return 1;

}

void CGiftDlg::OnCancel()

{

// TODO: Add extra cleanup here

FreeMem();

CDialog::OnCancel();

}

idtxt

332601771212061,章鱼

110103198511110453,李光

21010119541201045X,周瑜

320304780102066,韩信

442601771212061,沈兵

510103198511110453,宏志

220101841201045X,范进

520304197801020661,曾国

352601771212088,乱马

540122198511110453,贾海

dim i

窗口启动:

i=0

Open AppPath & "\电话号码txt" For Input As #1

while eof(1)=false

Line Input #1,a

List1AddItem a

wend

close #1

按开始:

timer1Interval=50

按结束:

timer1Interval=0

timer的事件:

i=i+1

if i=List1ListCount then i=0

Label1Caption = List1List(i)

不好意思啊,由于没有注意,所以先前的答案有两个小错误,现在已修正了

所需控件:

两个按钮,一个开始,一个结束;一个时钟控件

一个列表框;一个标签控件

以上就是关于谁有 九宫格抽奖的源码 注意:是可以设置抽奖概率的全部的内容,包括:谁有 九宫格抽奖的源码 注意:是可以设置抽奖概率的、C语言程序设计——编写一个抽奖程序,生成0-9之间的随机数,猜对了奖励10块钱,没中奖显示中奖号码、VB编写一个抽奖小程序,要求每次抽奖的数字不重复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10628253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存