TC官方合作论坛

标题: 2012.10.3号,问题2.那位大神帮我看一下,这个代码怎么重复? [打印本页]

作者: 252253494    时间: 2012-10-3 14:11
标题: 2012.10.3号,问题2.那位大神帮我看一下,这个代码怎么重复?
目的:做一个双色球随机选号器。
出现的问题:红1~红6个号码可能重复。(双色球,红球共33个号码,可以选6个为一组,但6个号码不能重复)

[attach]5545[/attach]      [attach]5544[/attach]
以下是我的代码:
功能 逻辑型 双色球_点击()
      整型 红1,红2,红3,红4,红5,红6,蓝1
      字符型 红1字符串,红2字符串,红3字符串,红4字符串,红5字符串,红6字符串,蓝1字符串
      
            红1=辅助.随机数(1,33)      
     如果 (红1!=红2)         
      红1字符串=转换.整型转字符型(红1)      
      编辑框.设置文本("编辑框0",红1字符串)
    否则(这后面应该怎么写了)
         
      
      红2=辅助.随机数(1,33)      
      红2字符串=转换.整型转字符型(红2)      
      编辑框.设置文本("编辑框1",红2字符串)
      
      
      
      红3=辅助.随机数(1,33)      
      红3字符串=转换.整型转字符型(红3)      
      编辑框.设置文本("编辑框2",红3字符串)
      
      
      
      
      红4=辅助.随机数(1,33)      
      红4字符串=转换.整型转字符型(红4)      
      编辑框.设置文本("编辑框3",红4字符串)
      
      红5=辅助.随机数(1,33)      
      红5字符串=转换.整型转字符型(红5)      
      编辑框.设置文本("编辑框4",红5字符串)
      
      红6=辅助.随机数(1,33)      
      红6字符串=转换.整型转字符型(红6)      
      编辑框.设置文本("编辑框5",红6字符串)
      
      蓝1=辅助.随机数(1,16)      
      蓝1字符串=转换.整型转字符型(蓝1)      
      编辑框.设置文本("编辑框6",蓝1字符串)

返回 真
//函数返回语句
功能结束


作者: shine宝宝    时间: 2012-10-3 14:24




整型 红1,红2,红3,红4,红5,红6,蓝1,线程句柄

字符型 红1字符串,红2字符串,红3字符串,红4字符串,红5字符串,红6字符串,蓝1字符串




功能 逻辑型 双色球_点击()


      线程句柄=线程.开启("空间名.选号","")
返回 真

功能结束



功能 逻辑型 选号()

循环(真)                  
            红1=辅助.随机数(1,33)      
如果 (红1==红2)         
     继续
否则
红1字符串=转换.整型转字符型(红1)      
编辑框.设置文本("编辑框0",红1字符串)
         跳出
     如果结束
循环结束

循环(真)
         红2=辅助.随机数(1,33)      
如果 (红2==红1)      
            继续
       否则
            ......
            跳出
       如果结束
循环结束


循环(真)
红3=辅助.随机数(1,33)      
如果 ((红3==红2)||(红3==红1))
       .........

返回 真
//函数返回语句
功能结束

不知道对不对- - 凭感觉写的


作者: 爱玩的一休    时间: 2012-10-3 14:33
回复 2楼shine宝宝的帖子

按照这个思路完成的代码死循环的几率很大
作者: 陌上青衣。    时间: 2012-10-3 14:33

作者: 夏末    时间: 2012-10-3 14:36
数组
作者: shine宝宝    时间: 2012-10-3 14:42
回复 2楼shine宝宝的帖子

按照这个思路完成的代码死循环的几率很大
爱玩的一休 发表于 2012-10-3 14:33:02
为啥?
作者: 252253494    时间: 2012-10-3 14:59
功能 逻辑型 双色球_点击()
      整型 红1,红2,红3,红4,红5,红6,蓝1
      字符型 红1字符串,红2字符串,红3字符串,红4字符串,红5字符串,红6字符串,蓝1字符串
      线程.开启("彩票选号器.选号","我是参数")||我不知道怎么填我的参数。
返回 真
功能结束
功能 逻辑型 选号()
      整型 红1,红2,红3,红4,红5,红6,蓝1
      字符型 红1字符串,红2字符串,红3字符串,红4字符串,红5字符串,红6字符串,蓝1字符串
循环(真)
      红1=辅助.随机数(1,33)      
   
    如果 (红1==红2)||(红1==红3)||(红1==红4)||(红1==红5)||(红1==红6)     
      
       继续
              
    否则
      红1字符串=转换.整型转字符型(红1)      
      编辑框.设置文本("编辑框0",红1字符串)
    如果结束
循环结束
      
循环(真)      
      红2=辅助.随机数(1,33)
    如果 (红2==红1)||(红2==红3)||(红2==红4)||(红2==红5)||(红2==红6)     
       继续              
    否则     
      红2字符串=转换.整型转字符型(红2)      
      编辑框.设置文本("编辑框1",红2字符串)
      如果结束
循环结束

循环(真)           
      红3=辅助.随机数(1,33)
    如果 (红3==红1)||(红3==红2)||(红3==红4)||(红3==红5)||(红3==红6)     
       继续              
    否则     
      红3字符串=转换.整型转字符型(红3)      
      编辑框.设置文本("编辑框2",红3字符串)
      如果结束
循环结束

红4………………
红5………………


循环(真)        
      红6=辅助.随机数(1,33)
    如果 (红6==红1)||(红6==红2)||(红6==红3)||(红6==红4)||(红6==红5)     
       继续              
    否则      
      红6字符串=转换.整型转字符型(红6)      
      编辑框.设置文本("编辑框5",红6字符串)
    如果结束
循环结束     
      
      
      蓝1=辅助.随机数(1,16)      
      蓝1字符串=转换.整型转字符型(蓝1)      
      编辑框.设置文本("编辑框6",蓝1字符串)

返回 真
//函数返回语句
功能结束

大神们,我除了一个打红色字体的"我是参数",我不知道怎么填而外,我还发现个问题。
那就是数字一直在第一个号码(也就是红1)一直不停的循环。
求解。


作者: 夏末    时间: 2012-10-3 15:07

  1. 功能 逻辑型 开始()
  2.     整型[] 随机数
  3.     整型 a,b,数据
  4.     随机数=整型[6]
  5.     循环(b<6)
  6.         数据=辅助.随机数(1,33)
  7.         a=0
  8.         循环(真)            
  9.             如果(数据==随机数[a])
  10.                 数据=辅助.随机数(1,33)
  11.                 a=0
  12.             否则
  13.                 a=a+1
  14.             如果结束
  15.             如果(a==6)
  16.                 随机数[b]=数据
  17.                 b=b+1
  18.                 跳出
  19.             如果结束
  20.         循环结束
  21.     循环结束
  22.    
  23.    
  24.     b=0
  25.     循环(b<6)
  26.         辅助.消息框(转换.整型转字符型(随机数[b]))
  27.         b=b+1
  28.     循环结束
  29.     返回 真
  30. 功能结束
复制代码

作者: 陌上青衣。    时间: 2012-10-3 15:11
好吧,解决了.
作者: shine宝宝    时间: 2012-10-3 15:16
好吧,解决了.
陌上青衣。 发表于 2012-10-3 15:11:25
你这签名咋回事
作者: 爱玩的一休    时间: 2012-10-3 15:19
回复 6楼shine宝宝的帖子

按照2楼的思路完成的代码本身并不是死循环,但其一次不重复的执行的概率不到62%,更多的时候是号码重复了,不停的循环,造成“死循环”的假象。“死”的是否明显主要看脚本解释器的性能,我原来用as写的30选7就是这个思路,基本到第5个球就“死循环”了。
作者: 陌上青衣。    时间: 2012-10-3 15:20
回复 10楼shine宝宝的帖子

你抄袭我签名干嘛
作者: shine宝宝    时间: 2012-10-3 15:26
回复 6楼shine宝宝的帖子

按照2楼的思路完成的代码本身并不是死循环,但其一次不重复的执行的概率不到62%,更多的时候是号码重复了,不停的循环,造成“死循环”的假象
爱玩的一休 发表于 2012-10-3 15:19:43
艾玛 牵扯到数学了!!!
作者: shine宝宝    时间: 2012-10-3 15:27
回复 10楼shine宝宝的帖子

你抄袭我签名干嘛
陌上青衣。 发表于 2012-10-3 15:20:50
你你你还好没把字改成什么同城交友
作者: 252253494    时间: 2012-10-3 15:29
可以了。
这个代码也可以的。刚才是我少输了【跳出】这两个字。呵呵。
以下代码:
功能 逻辑型 双色球_点击()
      整型 红1,红2,红3,红4,红5,红6,蓝1
      字符型 红1字符串,红2字符串,红3字符串,红4字符串,红5字符串,红6字符串,蓝1字符串
      线程.开启("彩票选号器.选号","我是参数")
返回 真
功能结束

功能 逻辑型 选号()
      整型 红1,红2,红3,红4,红5,红6,蓝1
      字符型 红1字符串,红2字符串,红3字符串,红4字符串,红5字符串,红6字符串,蓝1字符串
循环(真)
      红1=辅助.随机数(1,33)      
   
    如果 (红1==红2)||(红1==红3)||(红1==红4)||(红1==红5)||(红1==红6)     
      
       继续
              
    否则
      红1字符串=转换.整型转字符型(红1)      
      编辑框.设置文本("编辑框0",红1字符串)
      跳出
    如果结束
循环结束
      
循环(真)      
      红2=辅助.随机数(1,33)
    如果 (红2==红1)||(红2==红3)||(红2==红4)||(红2==红5)||(红2==红6)     
       继续              
    否则     
      红2字符串=转换.整型转字符型(红2)      
      编辑框.设置文本("编辑框1",红2字符串)
      跳出
      如果结束
循环结束

循环(真)           
      红3=辅助.随机数(1,33)
    如果 (红3==红1)||(红3==红2)||(红3==红4)||(红3==红5)||(红3==红6)     
       继续              
    否则     
      红3字符串=转换.整型转字符型(红3)      
      编辑框.设置文本("编辑框2",红3字符串)
      跳出
      如果结束
循环结束

循环(真)      
      红4=辅助.随机数(1,33)
    如果 (红4==红1)||(红4==红2)||(红4==红3)||(红4==红5)||(红4==红6)     
       继续              
    否则     
      红4字符串=转换.整型转字符型(红4)      
      编辑框.设置文本("编辑框3",红4字符串)
      跳出
    如果结束
循环结束

循环(真)     
      红5=辅助.随机数(1,33)
    如果 (红5==红1)||(红5==红2)||(红5==红3)||(红5==红4)||(红5==红6)     
       继续              
    否则      
      红5字符串=转换.整型转字符型(红5)      
      编辑框.设置文本("编辑框4",红5字符串)
      跳出
      如果结束
循环结束

循环(真)        
      红6=辅助.随机数(1,33)
    如果 (红6==红1)||(红6==红2)||(红6==红3)||(红6==红4)||(红6==红5)     
       继续              
    否则      
      红6字符串=转换.整型转字符型(红6)      
      编辑框.设置文本("编辑框5",红6字符串)
      跳出
    如果结束
循环结束     
      
      
      蓝1=辅助.随机数(1,16)      
      蓝1字符串=转换.整型转字符型(蓝1)      
      编辑框.设置文本("编辑框6",蓝1字符串)



返回 真
//函数返回语句
功能结束

不过我还有个问题:
就是这一句:线程.开启("彩票选号器.选号","我是参数")
这个"我是参数"是代表什么???

作者: 252253494    时间: 2012-10-3 15:42
回复 8楼夏末的帖子

大神,好多我都看的似懂非懂的。单个代码貌似看懂一大半。整体起来就不知道是什么了。郁闷
作者: 梦里只影向你    时间: 2012-10-3 17:32
用随机数组下标的方法,很简单的



  1. function bool 不重复随机数()
  2.    
  3.     string 返回红球串 //返回的红球号码
  4.    
  5.     int[] 红球 = int[33] //33个红球的数组
  6.    
  7.     //数组初始化
  8.     for(int i=0;i<33;i++)
  9.         红球[i] = i+1
  10.     endfor
  11.    
  12.     //随机6个红球
  13.     int 编号 =1
  14.     while(编号<7)
  15.    
  16.     int 随机下标 = 辅助.随机数(0,32)//随机数组下标
  17.    
  18.     if(红球[随机下标]!=0)
  19.         
  20.         返回红球串 = 返回红球串+convert.inttostr(红球[随机下标])+","
  21.         红球[随机下标] = 0 //随机到一个后赋值为0,这样后面就能避免重复
  22.         编号 = 编号 +1
  23.     endif

  24.     endwhile
  25.    
  26.     辅助.消息框(返回红球串)
  27.    
  28.     return true
  29. endfunction
复制代码


作者: 夏末    时间: 2012-10-3 18:20
第一个数

得到一个随机数
循环对比数组里的数
不等于 的情况下 加1
没有 数组[6]
加到6  表示 都对比完了 没重复

把这个数给 数组[0]
下标+1
跳出小循环



开始第2个数
重复上边步骤

如果有出现等于的情况  就重新 的一个随机数
把数组的下标复位 从0 开始对比 到出结果为止

因为没等于6   不会把值给 数组[1]

作者: zdy77233647    时间: 2012-10-3 20:08
解决了就好  我来玩了
作者: pest    时间: 2012-10-8 05:23
学习
作者: lzq5628989    时间: 2012-10-15 09:16
用数组呗~




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1