pgv_pvid: 通过网页源码可以看到他是这样实现的
d = (Math.round(Math.random() * 2147483647) * (new Date().getUTCMilliseconds())) % 10000000000;
Math.random()*2147483647 意思是在0到2147483647取一个随机数,这个round应该是四舍五入的意思了。
getUTCMilliseconds这个是取毫秒数,c++中SYSTEMTIME这个结构里面就有
本来是打算使用rand()直接取随机数的,了解后才发现rand()的取值范围是0~32767,这下可难到我了。网上有方法解决,但是觉得都好麻烦。还没去尝试,因为感觉这个参数对于登陆这块儿应该不是特别重要的,毕竟是随机数。重要的应该是前后对应,就是说我这里是这样子,之后再发送给服务器时同样要还是这个数
回归正题,这个随机数范围太大,那种方法感觉又太麻烦,瞎逛了半天也没好的方法。
然后突然就对2147483647这个数字感到疑惑,为什么是这个呢。
前面说到rand()取值范围为0~32767,所以所以可能出现的不同值为32768,32768*32768=1073741824,我拿它又乘以2,得到结果2147483648,这个就表示rand()*rand()*2所出现的最大次数为2147483648,其值范围就在0~2147483647之间。
呵呵,这样说来的话,Math.round(Math.random() * 2147483647)这个函数用c++来做的话 使用rand()*rand()*2效果应该是等同的;
------------------------------------
额,吃了一顿饭之后,和朋友侃了几句,才发现,这样的推论是不完全正确的。
我才想起来,一个int如果是4字节,32位的话,他的最大值就是2147483647,这样说来的话,这个函数的目的就是取一个int类型的随机数
之所以说不完全正确就是因为上面的猜测有误,但是如果想用c++生成这个随机数的话,上面的推论是没错的。
---------------------------------
再次编辑,这两天的研究表明,这个参数没啥用,保持不变即可。