Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Random 将F#随机生成器植入与Matlab相同的状态_Random_F#_Math.net - Fatal编程技术网

Random 将F#随机生成器植入与Matlab相同的状态

Random 将F#随机生成器植入与Matlab相同的状态,random,f#,math.net,Random,F#,Math.net,在尝试将一些Matlab代码移植到F#时,我试图确保翻译是准确的。到目前为止,我还不能完全确定是否有错误。由于许多代码本质上是统计的,因此可以方便地将F#生成器种子设定为与Matlab相同的状态。这也有助于对错误的精确方程式进行三角剖分。在我开始将Matlab生成的随机数转储到csv文件并以手动方式解决此问题之前,我想问一下。这不是一个确定的答案,因为在Matlab和F中实现自己的随机数生成器可能会产生最可靠的结果。您还必然会遇到.NET中的线程安全问题,以及matlab中的矩阵形状。比如说 在

在尝试将一些Matlab代码移植到F#时,我试图确保翻译是准确的。到目前为止,我还不能完全确定是否有错误。由于许多代码本质上是统计的,因此可以方便地将F#生成器种子设定为与Matlab相同的状态。这也有助于对错误的精确方程式进行三角剖分。在我开始将Matlab生成的随机数转储到csv文件并以手动方式解决此问题之前,我想问一下。

这不是一个确定的答案,因为在Matlab和F中实现自己的随机数生成器可能会产生最可靠的结果。您还必然会遇到.NET中的线程安全问题,以及matlab中的矩阵形状。比如说

在matlab中:

 rng(200,'twister')
 rand(1,5)
ans=

0.9476    0.2265    0.5944    0.4283    0.7641
在F#中:

valit:float[]=[| 0.9476322592;0.4941436297;0.2265474238; 0.1485590497;0.5944201448 |]

第一个、第三个和第五个随机数不匹配

现在,您可以通过使用不同的版本和/或F#和matlab数组维度来复制它


这不是一个确定的答案,因为在matlab和F#中实现自己的随机数生成器可能会产生最可靠的结果。您还必然会遇到.NET中的线程安全问题,以及matlab中的矩阵形状。比如说

在matlab中:

 rng(200,'twister')
 rand(1,5)
ans=

0.9476    0.2265    0.5944    0.4283    0.7641
在F#中:

valit:float[]=[| 0.9476322592;0.4941436297;0.2265474238; 0.1485590497;0.5944201448 |]

第一个、第三个和第五个随机数不匹配

现在,您可以通过使用不同的版本和/或F#和matlab数组维度来复制它


.

这不仅仅是一个播种问题——算法是一样的吗?我想人们可以在主要算法中进行选择,不是吗?在matlab中,默认的随机流后面有一个mersenne扭曲器。如果不能在F#中选择相同的参数,我会感到惊讶。我不认为这是有保证的-我相信即使对于Mersenne捻线机,也有可以调整的参数。最好的选择是从文件中读取随机数。MT有不同的版本。最好的选择是在Matlab和F#中实现自己的MT,或者按照您的建议下载/上传随机序列。您可以查看是否可以使用Matlab类型提供程序在F#中使用Matlab RNG。这不仅仅是一个播种的问题——算法是一样的吗?我想人们可以在主要的算法中进行选择,不是吗?在matlab中,默认的随机流后面有一个mersenne扭曲器。如果不能在F#中选择相同的参数,我会感到惊讶。我不认为这是有保证的-我相信即使对于Mersenne捻线机,也有可以调整的参数。最好的选择是从文件中读取随机数。MT有不同的版本。最好的选择是在Matlab和F#中实现自己的MT,或者按照您的建议下载/上传随机序列。您可以查看是否可以使用Matlab类型提供程序在F#中使用Matlab RNG。我对F#一无所知,但看起来您可能正在将
random1b.NextDoubles
的输出存储为
浮点值。这就是为什么只有其他所有值都匹配的原因吗?@horchler我明白为什么这看起来很混乱。实际上是F#编译器推断类型为
浮点数组
。这是正确的,表示64位浮点数。我只能猜测,区别在于matlab和.NET中随机数序列的生成方式。我对F#一无所知,但看起来您可能正在将
random1b.NextDoubles
的输出存储为
float
。这就是为什么只有其他所有值都匹配的原因吗?@horchler我明白为什么这看起来很混乱。实际上是F#编译器推断类型为
浮点数组
。这是正确的,表示64位浮点数。我可以猜测,区别在于matlab和.NET中随机数序列的生成方式。