"新神经 "是MetaTrader 5平台的一个开源神经网络引擎项目。 - 页 44

 
Urain

一个指定范围内的PRNG类。

优点:有可能有几个不同初始化的随机数。

均匀分布的任何范围的值,直到10lm(不幸的是,阵列不够大)。

对于10万次的调用,Rand()比标准的rand多出50微秒(rnd.Rand()=344时间rand()=391)。

缺点:Srand()需要很长的时间来初始化,标准范围是32768(766µs),10万几乎是2分钟。

我没有检查过10万的限制,但它一定是难以置信的长,因为时间是逐步增长的。


健康的批评是可以接受的。



你能详细说明一下吗?

为了什么目的,你可能需要这些功能?

   uint              control(){return(gcnt-1);};// получить значение счётчика при последнем автоматическом запросе Rand

   uint              Rand(uint i){return(res[i]);};// запрос Rand по указанному i (счётчик не изменяется)

或者是一个如何使用它们的小例子。

标准的有什么问题?

 
her.human:

你能详细说明一下吗?

为了什么目的可能需要这些功能?

   uint              control(){return(gcnt-1);};// получить значение счётчика при последнем автоматическом запросе Rand

   uint              Rand(uint i){return(res[i]);};// запрос Rand по указанному i (счётчик не изменяется)

或一个如何使用它们的小例子。

标准的有什么问题?

可能需要这些函数来简单地复制一个随机序列的一部分或全部,或者获得在对Rand()的某些调用中发出的值。

Rand()在很多方面都不尽人意。

1)如果你想得到从0到100的均匀分布 的序列,你不能直接从标准中得到(你必须修改算法)。

2)不可能同时使用两个序列,初始化srand,使其无法使用之前的初始化。

3)标准rand的范围只允许32768个零件,其他的都不允许。我甚至没有说要用100000来分割,但你甚至不能用10的任何倍数来分割它。例如:你有一个范围[-1;1],你需要把它分成几步,直到第三位数,把类初始化为范围2000,然后

Rand()/1000.-1.

并从[-1;1]范围内获得PRNG,步长为0.001。

你不能用标准的那个做这个。

 
谁? 什么? 告诉我,还有没有其他方法来优化任务?
 
Urain

可能需要这些函数来简单地复制一个随机序列的一部分或全部,或者检索在对Rand()的某些调用中发出的值。

该标准在许多方面都不能令人满意。

1)如果你想得到从0到100的均匀分布的序列,你不能直接从标准中得到(你必须修改算法)。

2)不可能同时使用两个序列,srand的初始化,使得不可能使用以前的初始化。

3)标准rand的范围只允许你把除法分成32768份,没有其他方式。我甚至不说把它拆成100000,但你将无法把它拆成10的任何倍数。例如:你有一个范围[-1;1],你需要把它分成几步,直到第三位数,所以你需要把类初始化为范围2000。

并从[-1;1]范围内获得PRNG,步长为0.001

你不能用标准的那个做这个。

1) 同意。

2)不清楚?你可能需要它的什么目的?

3)我没有过多地研究代码,它似乎指的是1)。

这就是为什么我有一个关于这(上述)两个功能的问题。

你肯定需要这样一个类(功能)。但没有人需要不必要的制动。

 

如果你难以理解第2步,也许你应该首先决定为什么你需要一个PRNG。

然后就会明白为什么需要同时拥有两个不相关的PRNG序列。

 
Urain

如果你难以理解第2步,也许你应该首先决定为什么你需要一个PRNG。

然后就会明白为什么同时有两个不相关的PRNG序列。


听起来很奇怪--不相关的PRNG序列。

我不明白神经网络的作用是什么?

 
人。

我搞不清楚这些神经网络是干什么用的?

没有理由,现在只是一个花哨的东西......

Urain

优点:有可能有几个不同初始化的随机数。

所以每个对象都会导致不同的序列?

缺点:Srand()需要很长的时间来初始化,标准范围是32768(766µs),1个羊羔几乎是2分钟。

这就是它真正的、非常可怕的、不现实的地方。它不应该是这样的。

我看看什么时候能有哪怕一点点的机会。
 
她.人

听起来很奇怪--不相关的PRNG序列。

我不明白神经网络是用来做什么的?

让我提醒你,如果你忘记了,在32768次调用rand之后(如果你不重新初始化它),序列会重复出现。

相应地,如果我们用一个初始化来生成两个时间上平行的序列,有些部分之间可能有关联(这不是强制性的,但有可能)。

网络有不同的算法,如Montecarlo,或GA,同样,每个网络与任何算法都需要初始的权重值。

 
TheXpert:

没有什么,只是这些天的一个花哨的东西...

1)所以每个对象都会导致不同的序列?

2)这就是它真正的、非常可怕的、不现实的地方。它不应该是。

等到有了哪怕一点点的差距,我就知道了。

1 是的,每个对象都在srand()处记忆一个序列,然后它就像标准的rand()一样循环往复。

2 我已经尽可能地优化了它;它更糟糕。

简而言之,为了使问题更容易解决,我将描述我在那里做了什么。

在准备之后,我们写一个临时数组增加序列(计数器值),然后生成器从renge范围内给出一个值(这个索引在从temp分配到res时被要求),只要值在产生的缓冲区中,在一个临时的,在这个地方我们把renge(生成器不能给出的值)。值通过检查传递给res缓冲区,如果temp有一个renge,那么我们已经将这个值分配给res,然后我们做快速排序(将所有renge带到数组的末端),并通过未触及的序列的其余部分截断范围。然后继续下去,直到所有的Res都被填满。

 
Urain

如果你忘记了,在32768次调用rand之后(如果你不重新初始化它的话),序列会重复出现。

相应地,如果我们用一个初始化来生成两个时间上平行的序列,某些部分可能有相关性(这不是必须的,但这种可能性仍然存在)。

网络有不同的算法,如Montecarlo,或GA,同样,每个网络与任何算法都需要初始化权重。

所有这些都是猜测。没有任何证据证明这一点。

我用GA做了很多实验,对PRNG的循环(重复)有这样的怀疑。事实证明,这不是关于卷轴...(这是关于我的)。

一句话:PRNG对GA运行没有影响。

关于初始化。

有这样一个愿望,即有可能在一个选择上进行初始化--通过零、PRNG、从一个文件中