Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file %RANDOM%和Math.RANDOM()之间的随机性差异_Batch File_Random_Jscript_Wsh - Fatal编程技术网

Batch file %RANDOM%和Math.RANDOM()之间的随机性差异

Batch file %RANDOM%和Math.RANDOM()之间的随机性差异,batch-file,random,jscript,wsh,Batch File,Random,Jscript,Wsh,我有一个混合的batch/jscript文件(使用cscript),它必须从文本文件中随机选取一个引用。所以,我需要一些RNG来调用,这些RNG足够随机,以使结果不会在会话之间重复太多而无法注意到 我们都知道%RANDOM%并没有那么好,但我注意到,连续多次执行%RANDOM%(在同一个会话中)会得到更多令人满意的结果 这是真的还是我最好使用下面的JScript function getRandomNumber(min, max) { return Math.floor(Math.rando

我有一个混合的batch/jscript文件(使用
cscript
),它必须从文本文件中随机选取一个引用。所以,我需要一些RNG来调用,这些RNG足够随机,以使结果不会在会话之间重复太多而无法注意到

我们都知道
%RANDOM%
并没有那么好,但我注意到,连续多次执行
%RANDOM%
(在同一个会话中)会得到更多令人满意的结果

这是真的还是我最好使用下面的JScript

function getRandomNumber(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

WScript.echo(getRandomNumber(0, 32767));

如果两次调用
%RANDOM%
与一次调用
getRandomNumber
函数之间存在显著的统计差异,我洗耳恭听。

JavaScript的内置随机数生成器随引擎实现的不同而变化。在不了解底层生成器的情况下,很难对其进行任何描述。这同样适用于
%RANDOM%
——不过它可能是作为(LCG)实现的。在网上搜索你可以很容易地找到,这也表明它是作为一个LCG实现的,一般来说,它的统计特性非常糟糕

现在的问题是
Math.random()
的性能是否更好?它也可以实现为LCG,但较新的实现(如Google V8、Microsoft Edge)可以实现为的变体。如果您知道所使用的JavaScript引擎,那么您可以很容易地找到生成器的类型,从而也可以找到有关其统计质量的信息

作为金标准,您还可以在诸如和之类的大型统计测试套件中比较这两个生成器,我认为,这对于您来说是一种过分的做法

最后一个建议是,如果我不得不在不知道它们的情况下在两者之间进行选择,我会使用JavaScript生成器。如果它是作为LCG实现的,那么它可能并不比
%RANDOM%
更糟糕, 否则就更好了


但是,嘿,你不必在两个潜在的坏生成器之间做出选择:使用一个自定义的生成器!检查可以移植到JavaScript的简单、现代、高质量的生成器。

Hmm,这是很多(p)RNG材料。也许我不是在寻找技术深度(背景)的东西,但我在寻找关于上述情况的更直接/简单的答案例如:连续第二次执行%random%后得到的数字的随机性增加了多少?我不明白你的问题。您讨论的是批处理脚本(bat文件),然后是JavaScript。顺便说一句,您想要使用生成器的目的似乎并不需要如此高质量的统计随机性,也许
%RANDOM%
就足够了。哎呀,我很抱歉没有提到它。我使用的是混合批处理/jscript文件和cscript。不,%RANDOM%对于这一点来说太容易预测了(这就是为什么我要连续执行两次)。我只对运行%RANDOM%两次与调用getRandomNumber函数一次之间的统计差异感兴趣。天啊,天啊,plasmacel说话了(以什么方式!)。我相信你是最进化的等离子细胞。我对你回答的质量/水平感到敬畏更严肃地说:非常感谢你的努力。非常感谢!:-)