vb要使用javascript中的Math.random()函数?有什么控件或方法?

解决方案 »

  1.   

    好像rnd得到的位数与Math.random()不一样啊。
      

  2.   

    vb里是single。java里可以自己定。
    如果你要double。
    试试,抄来的。
    Public Function dblRnd() As Double  Const Power15 As Long = 2 ^ 15
      Const Power16 As Long = 2 ^ 16
      Const LongMax As Long = 2 ^ 31 - 1  Dim lngValHi As Long
      Dim lngValLo As Long
      
      lngValHi = Int(Rnd * Power15)
      lngValLo = Int(Rnd * Power16)
      
      dblRnd = CDbl(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
      

  3.   

    dblRnd()得到的随机数,小数点后有15位,而Math.random()得到的随机数,小数点后有16位。不一致啊。不知道Math.random()和dblRnd()的算法是否一样。
      

  4.   

    那试试这个
    Private Sub Command1_Click()
       Dim lng As Variant
       
       lng = decRnd
       
       MsgBox Format(lng, "0.0000000000000000")
    End SubPublic Function decRnd() As Variant  Const Power15 As Long = 2 ^ 15
      Const Power16 As Long = 2 ^ 16
      Const LongMax As Long = 2 ^ 31 - 1  Dim lngValHi As Long
      Dim lngValLo As Long
       
      lngValHi = Int(Rnd * Power15)
      lngValLo = Int(Rnd * Power16)
       
      decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
      

  5.   

    试试
    Private Sub Command1_Click()
       Dim lng As Variant
       
       lng = decRnd
       
       MsgBox Format(lng, "0.0000000000000000")
    End SubPublic Function decRnd() As Variant  Const Power15 As Long = 2 ^ 15
      Const Power16 As Long = 2 ^ 16
      Const LongMax As Long = 2 ^ 31 - 1  Dim lngValHi As Long
      Dim lngValLo As Long
       
      lngValHi = Int(Rnd * Power15)
      lngValLo = Int(Rnd * Power16)
       
      decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
      

  6.   

    Private Sub Command1_Click()
       Dim lng As Variant
       
       lng = decRnd
       
       MsgBox Format(lng, "0.0000000000000000")
    End SubPublic Function decRnd() As Variant  Const Power15 As Long = 2 ^ 15
      Const Power16 As Long = 2 ^ 16
      Const LongMax As Long = 2 ^ 31 - 1  Dim lngValHi As Long
      Dim lngValLo As Long
       
      lngValHi = Int(Rnd * Power15)
      lngValLo = Int(Rnd * Power16)
       
      decRnd = CDec(lngValHi * Power16 Or lngValLo) / LongMaxEnd Function
      

  7.   

    Math.random()得到的是结果是小数点后有16位。
      

  8.   

    两个rnd如何接?能得到小数点15位的随机数?
      

  9.   

    搞不懂楼上这么多高手是怎么了,不愿意传授还是真不知道啊?(勿怪……)
    Function GetRandom() As String    
        Dim objScrCtl As Object
        Set objScrCtl = CreateObject("MSScriptControl.ScriptControl")
        objScrCtl.Language = "JavaScript"
        GetRandom = "0" & objScrCtl.Eval("Math.random()")
        Set objScrCtl = Nothing
    End Function这样不就行了么?