CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  数据结构与算法

求助彩票算法的实现

楼主kyosing(火)2006-03-01 20:57:27 在 专题开发/技术/项目 / 数据结构与算法 提问

1、一注内的n个号码不能重复,位置可以不考虑,但是为了便于查看,建议进行号码排序处理  
   
  2、题目的意思是机选产生一注号码,这注号码要在C(m,n)注号码中保持唯一,也就是所说的几百万分之一  
   
  3、进一步说就是假如你全包了m个号,也只有一个中大奖(风险控制)  
   
  4、机选过程的时间当然是越短越好!!  
   
  例如35选7中,选出500万组这样的号码,任意两个都不重复。 问题点数:20、回复次数:3Top

1 楼kyosing(火)回复于 2006-03-02 08:26:27 得分 0

彩票算法:  
  1       定义int       A[33]       用来存放1-33  
  2       产生一个随机数(0-32之间)i,取出A[i]放到B[1],同时A[i]同A[32]互换  
          接着产生一个随机数(0-31之间)j,A[j]放到B[2],同时A[j]同A[31]互换  
          ......  
  2可以用一个很简单的for语句完成同时完成排序  
   
  按照上面的算法写程序时,测试后,在10万条组合里就有300多条是重复的,明显不合格,不知道还有什么更好的办法?Top

2 楼kyosing(火)回复于 2006-03-02 15:14:26 得分 0

ASP   写的程序  
   
  <%  
  Const   M   =   36  
  Const   N   =   7  
  ReDim   data(M),c(N)  
   
  'Response.write   UBound(c)   &   ","   &   LBound(c)  
  'Response.End()  
   
  '初始化号码数组  
  For   i   =   1   to   M  
  data(i)   =   i  
  Next  
   
  '排序  
  Sub       BubbleSortNumbers(iArray)  
  Dim       i  
  Dim       k  
  Dim       temp  
  For   i   =   UBound(iArray)   To   LBound(iArray)   Step   -1  
  For   k   =   LBound(iArray)   +   1   To   i  
  If   iArray(k   -   1)   >   iArray(k)   Then  
  temp   =   iArray(k   -   1)  
  iArray(k   -   1)   =   iArray(k)  
  iArray(k)   =   temp  
  End   If  
  Next  
  Next  
  End       Sub  
   
  '生成机选号  
  Sub   MyRand(m1,n1)  
  Dim   i,k,t,temp  
  Randomize  
  For   k   =   1   to   n1  
  t   =   Int(((m1-k+1)   *   Rnd)   +   1)  
  c(k)   =   data(t)  
  '交换  
  temp   =   data(t)  
  data(t)   =   data(m1-k+1)  
  data(m1-k+1)   =   temp  
  Next  
   
  Call   BubbleSortNumbers(c)  
   
  '检查重复  
  For   k   =   1   to   n1   -   1  
  if   c(k)   =   c(k+1)   then  
  Response.Write   "error<br>"  
  k   =   n1  
  end   if  
  Next  
  End   Sub  
   
  '输出  
  Response.write   "<table   border=1   align=center><tr>"  
  For   i   =   1   to   M  
  Response.write   "<td>"   &   i   &   "</td>"  
  Next  
  Response.write   "</tr><tr>"  
   
  For   i   =   1   to   10  
  Call   MyRand(M,N)  
  '输出结果  
   
  For   k   =   1   to   c(1)   -   1  
  Response.write   "<td>&nbsp;</td>"  
  Next  
  Response.write   "<td   bgcolor=red><font   color='#ffffff'>"   &   c(1)   &   "</font></td>"  
  For   j   =   2   to   N  
  For   k   =   1   to   c(j)   -   c(j-1)   -   1  
  Response.write   "<td>&nbsp;</td>"  
  Next  
  Response.write   "<td   bgcolor=red><font   color='#ffffff'>"   &   c(j)   &   "</font></td>"  
  Next  
  For   k   =   1   to   M   -   c(N)  
  Response.write   "<td>&nbsp;</td>"  
  Next  
  Response.Write   "</tr>"  
  tt   =   ""  
  For   k   =   1   to   n1  
  if   tt   <>   ""   then    
  tt   =   tt   &   ","   &   c(k)  
  else  
  tt   =   c(k)  
  end   if  
  Next  
  Response.Flush()  
  Next  
  Response.write   "</table>"  
  %>Top

3 楼zoologist(王朝)回复于 2006-03-02 16:21:17 得分 0

http://www.begin.org.cn/pascal/paizu.rarTop

相关问题

  • 彩票算法问题?
  • 高分求一个彩票算法!!
  • 求彩票复式投注的算法
  • 求算法 与 实现
  • 求算法与实现
  • steiner树算法实现
  • MD5算法的T-SQL实现
  • 一个算法的实现?!!
  • C++实现,求0ms算法
  • 算法和实现讨论

关键词

  • 算法
  • nextresponse
  • iarray
  • 号码
  • 重复
  • tt
  • write
  • 产生
  • response
  • sub

得分解答快速导航

  • 帖主:kyosing

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo