newx 发表于 2009-9-28 01:18:18

random()与JS中的random()不同,为什么?

本帖最后由 newx 于 2009-10-8 23:52 编辑

在JS中:
Math.random()
产生0至1的17位的随机数,
但在AU3中random()为什么只有16位?怎么解决?

netegg 发表于 2009-9-28 01:39:26

这问题问得有水平,js的定义和bat的定义一样吗?我也想知道

newx 发表于 2009-9-28 23:01:45

sorry !
我是取网页中一图片,而图片是以ID的方式取得,而ID的值是通过JS中的math.random()取得,可是用AU3的random取得的数与JS的不同,取得的图片也就不一样了,这样取验证的图片就不准了。
我在C#中可以使用random的函数,所得的值与网页中的一样,但在AU3中不知怎样才能取与JS方式一样的值。

newx 发表于 2009-9-28 23:02:04

sorry !
我是取网页中一图片,而图片是以ID的方式取得,而ID的值是通过JS中的math.random()取得,可是用AU3的random取得的数与JS的不同,取得的图片也就不一样了,这样取验证的图片就不准了。
我在C#中可以使用random的函数,所得的值与网页中的一样,但在AU3中不知怎样才能取与JS方式一样的值。

netegg 发表于 2009-9-28 23:52:38

你怎么取的数?

newx 发表于 2009-9-30 22:06:51

在网页中的代码(JS):
Math.random() 所取的数是randnum=0.5029791949568696 (16位)
在AU3中:
msgbox(0,0,random()) 所取的数是:0.901016695424914 (15位)
这是网页中的验证码图片,所用的是XXXX.php?randnum=0.xxxxxxxxxxxxxxxx
0.xxxxxxxxxxxxxxxx是从JS函数Math.random()取得,要求是小数后16位,可用AU3的random只有15位,AU3应该怎么取得16位?

newx 发表于 2009-9-30 22:07:06

在网页中的代码(JS):
Math.random() 所取的数是randnum=0.5029791949568696 (16位)
在AU3中:
msgbox(0,0,random()) 所取的数是:0.901016695424914 (15位)
这是网页中的验证码图片,所用的是XXXX.php?randnum=0.xxxxxxxxxxxxxxxx
0.xxxxxxxxxxxxxxxx是从JS函数Math.random()取得,要求是小数后16位,可用AU3的random只有15位,AU3应该怎么取得16位?

kn007 发表于 2009-9-30 22:12:54

别每次回2次重复的回复,不然扣分

vivier001 发表于 2009-10-1 13:32:15

不知,帮顶:face (35):

newx 发表于 2009-10-8 23:51:32

已解决
AU3的Random()不能实现,但调用JScript就行了
Func nRandom()
   Local $code
   $code &= 'function vRandom()' & @CRLF
   $code &= '{' & @CRLF
   $code &= 'var now = new Date()' & @CRLF
   $code &= 'var nvalue = Math.random()+"_"+now.getTime()' & @CRLF
   $code &= 'return nvalue' & @CRLF
   $code &= '}' & @CRLF
   $nJS = ObjCreate("ScriptControl")
   $nJS.language = "JScript"
   $nJS.addcode($code)
   $nRandom = $nJS.Run("vRandom")
   Return $nRandom
EndFunc

plutosherry 发表于 2015-3-4 17:08:25

学习了,最近正好也在写这方面的代码。遇到同样的问题,不过才用其他方法解决了,曲线救国了吧
页: [1]
查看完整版本: random()与JS中的random()不同,为什么?