Mailbomb(网络咖啡) 不是还有随机种子吗怎么会每次随机都一样呢还一星呢?

解决方案 »

  1.   


    54张牌,*2 搞一个数组,CardArray(54,2),对于每张牌编一个号码,1--108,在发了一张牌以后,编号减一,但必须对剩下的牌再编号然后在剩下的牌里再取随机发牌,
      

  2.   

    游戏图片不是动态连接库,我是用截图得笨方法做得。然后做到了一个资源文件里。要用得时候就从资源文件里调用。不过我有OCX的,我没有用,如果你想要的话,留E-MAIL地址给我。
    以下就是我的程序:Public Sub fapai()  '这是一个过程函数
    Dim i As Integer
    Randomize Timer
    cardfilename = Array(123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 179, 180, 181) 
    ’这个数组存放的是所有图片在资源文件中的代号,你们可以发现,所有的数字在数组中已经出现两次了。也就是说我只要随机的把数字分完,应该就可以了。
    For i = 0 To 107
       Set cardini(i) = LoadResPicture(cardfilename(Int(Rnd() * 107)), vbResBitmap)
       image1(i).Picture = cardini(i)
    Next i
    End Sub
      

  3.   

    我给你提个建议    你说的 cardfilename 数组存放的是资源文件的编号,而你的 cardfilename(Int(Rnd() * 107))最多只能保证每次都能取回一张牌的资源号,但不能保证他没有重复。我觉得你可以建一个54个元素的1维数组,然后每个元素有三个状态0,1,2(0代表没有被抽取过,1代表抽取过1次,2代表已抽取过2次),这样当你产生随机数时比对相应位置上的值就可以了。
      

  4.   

    这说白了是一个取不重复随机数的问题啊,现给一种方法:
    定一个数组dim Card(107)
    在card(107)中存入你的108张牌。
    然后用随机数生取出0-107在的一个元数的下标.如:Card(12)
    就把Card(12)这张牌取出,然后再把Card()数组的最后一个元类填入Card(12)中
    下一会再用随机数生生存(0到107-1)中的一个数,再重复上边的方法。
    直到取完
    这应是最有效的一种算法了。
    for i=0 to 107
        d=Int(Rnd() * 107-d)
        Img=Card(d)
        Card(d)=Card(107-d)
    next
    记得给分啊!
      

  5.   

    我给出一个想法,这个想法我在当时用C编的时候就用了,我一开始也把排做在2维数组里了,然后每次抽每次取随机。但是重新想一下真正的发排。排在理好的时候,几个人能发到的排就已经确定了。那么,你就可以做一个理排的过程,比方说,一个数组里,随机的数组元素和另一数组元素做对换,也就是排位对换,那让程序模拟一下,让它随机的对换几十次,循环就可以了,然后,它仍然是一个数组,那么我们就从第1个拿排的人开始,假如是4个人玩。那么他拿的是 排数组[N*4]的排。第2个就拿 排数组[N*4+1]的排。这样等到排发完,大家都是随机的排。另外,VB每次随机相同是因为,没用RANDOMIZE初始化VB种子,而不用的话,在别的语言中同样,随机数也是重复的。
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  6.   

    换一个思路:
    将108张牌顺序放入数组playcard(107)中。
    然后取若干次随机数(1-108,乘以107后要加1),例如第一次取,得58,将1与58对换,第二次取,得86,将2与86对换。足够多次后(试验一下),感觉足够乱序即可。最多108次,所有的牌都换过了。
    然后顺序发牌。
      

  7.   

    我的EMAIL是[email protected]
    谢谢,