对福利彩票提点建议

ddn_star 2001-09-30 10:01:46
现在福利彩票很流行,大伙能否对福利彩票提点建议:
比如思路\函数\概率\算法等?
...全文
375 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
9527 2001-12-18
  • 打赏
  • 举报
回复
我新写的几个函数,很初步,并且效率不高,但是可以简单的实现等概率、排除选定组合、包含选定组合的取值,希望能够交流一下。使用函数前不要忘了Randomize呀,要不然呵呵。

//----------------------------------------------------------------------------
//函数:function CharFrequency(const subString,s:string):integer;
//作用:取得指定子句subString在字符串s中出现的频率
//参数:subString:子句;s查询字符串。
//----------------------------------------------------------------------------
function CharFrequency(const subString,s:string):integer;
var
internalString:string;
i,j,k:integer;
begin
internalString:=s;
k:=0;
j:=Length(subString);
i:=Pos(substring,internalString);
while i>0 do
begin
k:=k+1;
Delete(internalString,i,j);
i:=Pos(substring,internalString);
end;
result:=k;
end;


//----------------------------------------------------------------------------
//函数:function GetLottery(SumSeeds,LotSeeds:integer):string;
//作用:等概率取得在选定范围内[1..SumSeeds]中LotSeeds数量的一个随机数序列
//参数:SumSeeds:取数范围,从1开始;LotSeeds:随机数序列的长度。
//----------------------------------------------------------------------------
function GetLottery(SumSeeds,LotSeeds:integer):string;
var
FromBalls,ToBalls:array of integer;
i,j,k,l,m:integer;
s:string;
begin
SetLength(ToBalls,LotSeeds);
SetLength(FromBalls,SumSeeds);
k:=SumSeeds;
for i:=1 to LotSeeds do
begin
j:=1+random(k);
for l:=1 to SumSeeds do
begin
if l>j then
begin
ToBalls[i-1]:=j;
FromBalls[j-1]:=i;
Break;
end
else
begin
if FromBalls[l-1]<>0 then
Inc(j)
else
begin
if l=j then
begin
ToBalls[i-1]:=j;
FromBalls[j-1]:=i;
Break;
end;
end;
end;
end;
Dec(k);
s:=s+Format('%2.2d',[Toballs[i-1]])+',';
end;
result:=s;
end;

//----------------------------------------------------------------------------
//函数:function ExceptLot(SumSeeds,LotSeeds:integer;ExceptStr:array of integer):string;
//作用:排除制定的整数序列ExceptStr,
// 取得在选定范围内[1..SumSeeds]中LotSeeds数量的一个随机数序列
//参数:SumSeeds:取数范围,从1开始;LotSeeds:随机数序列的长度;ExceptStr:被排除的证书序列,
// 使用方式如[1,2,3,4]。
//----------------------------------------------------------------------------
function ExceptLot(SumSeeds,LotSeeds:integer;ExceptStr:array of integer):string;
var
FromBalls,ToBalls:array of integer;
i,j,k,l,m:integer;
s:string;
begin
if Length(ExceptStr)>=(SumSeeds-LotSeeds) then
begin
ShowMessage('排除范围过大');
Result:='';
Exit;
end;

LotSeeds:=LotSeeds+Length(ExceptStr);//注意和包含取法的不同
SetLength(ToBalls,LotSeeds);
SetLength(FromBalls,SumSeeds);
for i:=0 to Length(ExceptStr)-1 do
begin
ToBalls[i]:=ExceptStr[i];
FromBalls[ToBalls[i]-1]:=i+1;
end;

k:=SumSeeds-Length(ExceptStr);
for i:=1+Length(ExceptStr) to LotSeeds do
begin
j:=1+random(k);
for l:=1 to SumSeeds do
begin
if l>j then
begin
ToBalls[i-1]:=j;
FromBalls[j-1]:=i;
Break;
end
else
begin
if FromBalls[l-1]<>0 then
Inc(j)
else
begin
if l=j then
begin
ToBalls[i-1]:=j;
FromBalls[j-1]:=i;
Break;
end;
end;
end;
end;
Dec(k);
s:=s+Format('%2.2d',[Toballs[i-1]])+',';
end;
result:=s;
end;

//----------------------------------------------------------------------------
//函数:function IncludeLot(SumSeeds,LotSeeds:integer;ExceptStr:array of integer):string;
//作用:始终选定指定的整数序列ExceptStr,
// 取得在选定范围内[1..SumSeeds]中LotSeeds(包含Exceptstr)数量的一个随机数序列
//参数:SumSeeds:取数范围,从1开始;LotSeeds:随机数序列的长度;ExceptStr:始终包含的整数序列,
// 使用方式如[1,2,3,4]。
//----------------------------------------------------------------------------
function IncludeLot(SumSeeds,LotSeeds:integer;ExceptStr:array of integer):string;
var
FromBalls,ToBalls:array of integer;
i,j,k,l,m:integer;
s:string;
begin
if Length(ExceptStr)>=LotSeeds then
begin
ShowMessage('包含范围过大');
Result:='';
Exit;
end;

SetLength(ToBalls,LotSeeds);
SetLength(FromBalls,SumSeeds);

for i:=0 to Length(ExceptStr)-1 do
begin
ToBalls[i]:=ExceptStr[i];
FromBalls[ToBalls[i]-1]:=i+1;
s:=s+Format('%2.2d',[Toballs[i]])+',';//包含时的做法
end;

k:=SumSeeds-Length(ExceptStr);
for i:=1+Length(ExceptStr) to LotSeeds do
begin
j:=1+random(k);
for l:=1 to SumSeeds do
begin
if l>j then
begin
ToBalls[i-1]:=j;
FromBalls[j-1]:=i;
Break;
end
else
begin
if FromBalls[l-1]<>0 then
Inc(j)
else
begin
if l=j then
begin
ToBalls[i-1]:=j;
FromBalls[j-1]:=i;
Break;
end;
end;
end;
end;
Dec(k);
s:=s+Format('%2.2d',[Toballs[i-1]])+',';
end;
result:=s;
end;

//----------------------------------------------------------------------------
//函数:function CallGetInclude(SumSeeds,LotSeeds:integer;ExceptStr:string):string;
//作用:将符合要求格式的ExceptStr:string转化为array of integer,并调用函数IncludeLot;
//参数:解释略
//----------------------------------------------------------------------------
function CallGetInclude(SumSeeds,LotSeeds:integer;ExceptStr:string):string;
var
i,j,iRound,iLength:integer;
iParam:array of integer;
sParam,s:string;
begin
sParam:=ExceptStr;
iRound:=CharFrequency(',',sParam);
iLength:=Length(sParam);
if Copy(sParam,iLength,1)<>',' then
begin
iRound:=iRound+1;
iLength:=iLength+1;
sParam:=sParam+',';
end;
SetLength(iParam,iRound);
s:='';
j:=0;
for i:=1 to iLength do
begin
if sParam[i]=',' then
begin
iParam[j]:=StrToIntDef(s,0);
s:='';
inc(j);
end
else
begin
s:=s+sParam[i];
end;
end;
result:=IncludeLot(SumSeeds,LotSeeds,iParam);
end;

//----------------------------------------------------------------------------
//函数:function CallGetExcept(SumSeeds,LotSeeds:integer;ExceptStr:string):string;
//作用:将符合要求格式的ExceptStr:string转化为array of integer,并调用函数ExceptLot;
//参数:解释略
//----------------------------------------------------------------------------
function CallGetExcept(SumSeeds,LotSeeds:integer;ExceptStr:string):string;
var
i,j,iRound,iLength:integer;
iParam:array of integer;
sParam,s:string;
begin
sParam:=ExceptStr;
iRound:=CharFrequency(',',sParam);
iLength:=Length(sParam);
if Copy(sParam,iLength,1)<>',' then
begin
iRound:=iRound+1;
iLength:=iLength+1;
sParam:=sParam+',';
end;
SetLength(iParam,iRound);
s:='';
j:=0;
for i:=1 to iLength do
begin
if sParam[i]=',' then
begin
iParam[j]:=StrToIntDef(s,0);
s:='';
inc(j);
end
else
begin
s:=s+sParam[i];
end;
end;
result:=ExceptLot(SumSeeds,LotSeeds,iParam);
end;
9527 2001-10-01
  • 打赏
  • 举报
回复
咋们两个可以交流一下,我也不知道该如何体现概率,我写的函数,不过觉得很差,是等概率的,My Mail:hslt@netease.com

function GetLottery(SumSeeds,LotSeeds:integer):string;
var
FromBalls,ToBalls:array of integer;
i,j,k,l,m:integer;
s:string;
begin
SetLength(ToBalls,LotSeeds);
SetLength(FromBalls,SumSeeds);
k:=SumSeeds-1;
for i:=1 to LotSeeds do
begin
j:=1+random(k);
for l:=0 to SumSeeds-1 do
begin
if l>j-1 then
begin
ToBalls[i-1]:=j;
FromBalls[j-1]:=i;
Break;
end
else
begin
if FromBalls[l]<>0 then
Inc(j);
end;
end;
Dec(k);
s:=s+Format('%2.2d',[Toballs[i-1]])+',';
end;
result:=s;
end;


tikkypeng 2001-10-01
  • 打赏
  • 举报
回复
呵呵~~
luoxf 2001-10-01
  • 打赏
  • 举报
回复
有空我也想去
Nizvoo 2001-10-01
  • 打赏
  • 举报
回复
老兄:
你想抽奖赚米米吗?
不要相信程序算出来的东西。
要用第七感觉去感受。
这个东西别人用算法算出来是好多好多分之一我却不那么认为。
这可以用偶然性与必然偶来解释。
你中奖是偶然同同时也是个必然的。
你不中奖是必然的同时也是偶然的。
就像你明天要死不会等到后天。
你明末要活不会今天会死。
Jover 2001-09-30
  • 打赏
  • 举报
回复
up
Jover 2001-09-30
  • 打赏
  • 举报
回复
up
Jover 2001-09-30
  • 打赏
  • 举报
回复
up
ddn_star 2001-09-30
  • 打赏
  • 举报
回复
有没有哪位大哥大姐的代码借我看看,我总是写不好
email:ddn-star@yeah.net
计算机课程设计 第1页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第1页。 设计任务和要求 通过本课程设计完成一个小型实用程序的设计、分析和编码、调试。进一步熟练程序的编写及数据结构的应用,提高运用程序设计综合知识解决实际问题的能力,并在完成程序设计的同时写出完善的设计报告。 要求:程序功能清晰、完善,能正常运行且结果正确;用户界面友好,代码要求符合标准,排版清晰,风格良好。设计过程中应提供完善的设计报告和代码说明。 第2页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第2页。 考核方式 第3页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第3页。 考核指标 总分为100分,以具体分数记: 1)平时成绩(30分) a) 及时向指导教师汇报所选题目及进度 (10分) b) 对指导教师所提问题的改正情况 (10分) c) 工作量饱满(10分) 第4页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第4页。 考核指标 2)课程设计质量(55分) 程序(35分) a)按时独立完成,基本功能完整(10分) b)用户界面(10分) c)选题难度等级(15分) EASY(5分)" NORMAL (10分)" HARD (15分) 设计报告(20分) 打印、装订成册,在程序检查结束后提交。考核要点如下: a)按时提交不拖拉。(5分) b)报告内容组织层次分明、条理清晰。(5分) c)技术细节描述正确、具体,结构完整。(10分) 第5页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第5页。 考核指标 3)答辩情况(15分) 由指导教师通过当面提问的方式验证课程设计。 第6页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第6页。 建议 刻盘部分:2个文件 "源程序"+"报告文档" 档案袋,有2张成绩评分表 除教师填写部分外,其余要自己事先填写好 其中的"任务书",就是要把报告中"要解决的问题"归纳下,抄上去 第7页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第7页。 日期安排 第6周:开题并布置具体任务。 第7~8周:阅读参考文献和,确认所选题目后请及时发到我的邮箱: 第9~10周:系统设计和构建 第11周:中期检查 第12-13周:编码实现、调试和改进。 第14-15周:课程设计报告的撰写。 第16-17周:检查资料完整性后提交课程设计报告,教师评定综合成绩。 第8页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第8页。 参考题目 EASY(5分) E01 简易计算器程序 (1人独立完成) 编写一个功能基本完善的计算器程序,支持四则运算、乘方开方、指数对数等运算,支持带括号的表达式 程序采用字符界面 显示功能菜单,用户按指定键即可进入相应功能 每次计算完成后输出一个提示符,要计算的数字或表达式由用户在提示符后面输入 用户输入完按回车键立即显示计算结果 第9页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第9页。 4)同组同学一人交一份报告,并且报告内容不能雷同。 c)选题难度等级(15分) (2) 实现对各种信息的查询、统计。 用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。 其中的"任务书",就是要把报告中"要解决的问题"归纳下,抄上去 E01 简易计算器程序 (1人独立完成) b)报告内容组织层次分明、条理清晰。 要求用户可以在动画显示区创建汇聚节点和水声传感器节点,并用动画显示水声传感器网络仿真过程。 在软件仿真开始之前,移动节点类的对象要读取相应的移动节点的轨迹。 前台展示:可通过web浏览声音和照片,可检索每幅照片或配音。 可把这些多媒体存储在文件夹下,只在数据文件中存储该媒体文件的路径,网页上调用时,读取路径名,从而找到相应媒体播放。 c)技术细节描述正确、具体,结构完整。 水声传感器节点接受到该信息后定制一组移动信息,内容包括移动的速度和移动的位置。 b)用户界面(10分) 将题目"某地"替换成你所选的地名。 参考题目 EASY(5分) E02 模拟双色球开奖程序 (1人独立完成) 模拟福利彩票的双色球开奖程序,由程序产生六个蓝色球和一个红色球。可按规则计算是否获奖,奖的等级、金额等 程序采用字符界面 显示功能菜单,用户按指定键即可进入相应功能 每期开出的蓝色号不能重复,但红色球可以是蓝色球中的一个。蓝色球的范围是1-33,红色球的范围是1-16 输出格式为:蓝色球:xx xx xx xx xx xx 红色球:xx 第10页,共23页。 计算机课程设计(共23张PPT)全文共23页,当前为第10页。 参考题目 EASY(5分

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧