玖叶教程网

前端编程开发入门

双色球号码我做主,数据库编程随机生成双色球号码(MySQL)

购买福彩双色球是大家一种喜闻乐见的娱乐活动,还可以高大上的说是为了公益事业献爱心,作者本身就积极热爱这项活动,截至目前的最佳战绩是1000元,今天(周四)又是双色球开奖日,拿起手机准备点击随机选号的时候,突发了我的灵机,能不能用数据库(MySQL)来实现随机双色球号码呢?说干就干!

模拟双色球那我们就模拟真实的中奖号码的产生过程。33个红球放在一个罐子里,每次产生一个,每产生一个罐子里的球就少一个,那我就设计一个表red,代表这个红球罐子:

create table red(
r int(2),
u char(1) default '0'
);

其中r代表红球号码,u代表是否使用的意思,默认值0,未使用,1代表已使用过。

然后插入从1到33的33行数据代表红球:

insert into red(r) values(1);
insert into red(r) values(2);
insert into red(r) values(3);
insert into red(r) values(4);
insert into red(r) values(5);
insert into red(r) values(6);
insert into red(r) values(7);
insert into red(r) values(8);
insert into red(r) values(9);
insert into red(r) values(10);
insert into red(r) values(11);
insert into red(r) values(12);
insert into red(r) values(13);
insert into red(r) values(14);
insert into red(r) values(15);
insert into red(r) values(16);
insert into red(r) values(17);
insert into red(r) values(18);
insert into red(r) values(19);
insert into red(r) values(20);
insert into red(r) values(21);
insert into red(r) values(22);
insert into red(r) values(23);
insert into red(r) values(24);
insert into red(r) values(25);
insert into red(r) values(26);
insert into red(r) values(27);
insert into red(r) values(28);
insert into red(r) values(29);
insert into red(r) values(30);
insert into red(r) values(31);
insert into red(r) values(32);
insert into red(r) values(33);

篮球由于只有一个,所以就不用制作罐子了,生成一个1到16的随机数就行。准备工作结束那就开始编写SQL语句吧。呦呦呦!不巧的是MySQL的循环只能写在过程或者函数里,那我们就编写这样一个函数:

CREATE FUNCTION doublecolorball() RETURNS varchar(100) CHARSET utf8
BEGIN
declare i int default 1;#定义一个循环变量
declare red int;#定义单个红球
declare redballs varchar(100);#定义红球串
update red set u='0';#开始前,将所有红球置为可用状态
while i<=6 do #循环6次
select r into red from red where u='0' order by rand() limit 1; #从红球堆里一次抽取一个
update red set u='1' where r=red;#将抽取的红球设置为已用状态
set i = i+1;#循环变量增加1,代表已经完成一次抽取红球的操作
end while;#循环体结束
select GROUP_CONCAT(r) into redballs from red where u='1';#将所有已经抽取的红球聚合成一行一列并将结果赋值给变量redballs
RETURN concat('红球:',redballs,' 篮球:',cast(floor(rand()*16)+1 as char(2)));#随机从1到16抽取一个篮球并和红球串组合返回。
END;#函数体结束

上面的函数创建成功后,使用以下方法调用

select doublecolorball() 中将号码;

这样一个福彩双色球的MySQL随机函数就完成了,我们来回顾一下使用到的相关技术:

1、创建表的语句,其中字段有默认值的写法 create table;

2、插入数据的方法insert;

3、创建函数的方法、调用函数的方法create function …returns;创建函数还可以使用变量,不过本函数没必要使用变量。

4、declare定义变量并赋初值;

5、查询数据并将数据使用变量保存into;

6、update更新数据;

7、随机数函数rnad()只能随机0到1的小数,所以用一种变相方法实现1到16的随机数;

8、使用group_concat函数将单列多行数据聚合成单行单列数据。

9、调用函数的方法 select 函数();

10、mysql注释语句的写法#,注意如果函数内的注释行折行,请将其变成单行,或者注释行前面都加上#

此函数只是简单实现了随机生成号码的方法,其实还可以扩展双色球的各种复杂算法,比如和值、奇偶比、三区比等等,稍微扩展一下red表即可,那位有优秀想法可以私信联系我实现算法,共同实现大奖梦。

学习和使用此函数不一定中奖,倒是可以多多练习MySQL的SQL写法,多多实现此类具有实际意义的事情,数据库能力便会愈来愈强。

最后为啥你老是写MySQL的实现方法,不写Oracle和SQL Server了,因为MySQL方便,可以偷懒,下次把那哥俩带上!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言