thanks,的确有类似贴子,但是如果在极短的时间内要求得到大量的随机数,即便可以得到微秒的值,它似乎也难以胜任。并且C语言中的RANMDOM在初值一样的情况下,一次性调用的随机数是都是一样的。比如第一次调用random(5):1,3,1,4,0第二次仍然如此。因此我认为应该是有公式的。

解决方案 »

  1.   

    在PASCAL程序设计教科书,黄启华写的,里面就有一个ROMDON的算法程序...
      

  2.   

    对不起,写错啦...是RONDOM......一时手快,写成ROMDON..呵呵
      

  3.   

    ;********************************************************************
    ; 随机数发生器
    ; 输入:al = 随机数 bit 数
    ; 返回:eax = 随机数
    ;********************************************************************
    _Random proc uses ebx ecx mov cl,al
            xor eax,eax
            mov bl,byte ptr dwRandom
            and bl,1
    Gen_bit: ; make n bit numbers
            shl eax,1
            mov edx,dwRandom ; Copy seed
            shr edx,9
            xor bl,dl
            shr edx,5
            xor bl,dl
         bt ebx,1 ; Copy bit 1 to carry flag
            rcr dwRandom,1 ; Rotate seed right 1 bit
            setc bl ; Set bl TRUE if carry is set
    or al,bl dec cl
            jnz Gen_bit
    ret_Random endp
    我粘!!!
      

  4.   

    你可以到云风工作室找找,那里有 指顾江山 的一个算法,用什么写的我就不清楚了,你也可以发email到[email protected]问他。
      

  5.   

    随机最常用的方法是线性同余法,在TC/BC里就是用这种方法的。
    但随机函数得到的是伪随机,即只要随机种子初值一样的话其得到的随机数字序列
    都是相同的。为了得到比较真一点的随机数,需要初始化随机种子,象C/C++里
    是先调用random函数。当然random函数的参数如果是同样的话,得到的随机数序列
    也是一样的,所以一般都用time得到一个唯一的数字当参数(是1980年到现在的
    秒数)。