"New Neural", MetaTrader 5 platformu için bir sinir ağı motorunun Açık Kaynak projesidir. - sayfa 44

 
Ukrayna :

Belirtilen aralıkta PRNG sınıfı.

Avantajları : Farklı başlatmalara sahip birkaç rastgeleye sahip olma yeteneği,

10 lam'a kadar herhangi bir aralığın eşit olarak dağıtılmış değerleri (maalesef dizi artık yeterli değil).

10 çağrı ile Rand(), standart Rand'ı 50 µsn geride bıraktı (time rnd.Rand()=344 time rand()=391).

Dezavantajları : Srand()'ın başlatılması uzun zaman alır, standart aralık 32768 (766 µs), 1 lam neredeyse 2 dakikadır.

10 lyam sınırını kontrol etmedim, ancak zaman ilerledikçe inanılmaz derecede uzun zaman geçti.


Sağlıklı eleştiri kabul edilir.



Daha?

Bu işlevlerin amacı nedir?

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

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

Veya küçük bir kullanım örneği.

Memnun olmayan standart nedir?

 
onun.insan :

Daha?

Bu işlevlerin amacı nedir?

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

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

Veya küçük bir kullanım örneği.

Memnun olmayan standart nedir?

Rastgele bir dizinin bir kısmını veya tamamını basitçe kopyalamak veya belirli Rand() çağrılarında yayılan değerleri almak için bu işlevlere ihtiyaç duyulabilir.

Standart pek çoğuna uymuyor:

1) 0'dan 100'e kadar düzgün bir şekilde dağıtılmış bir dizi elde etmeniz gerekiyorsa, bunu doğrudan standart olandan alamazsınız (bir algoritma oluşturmanız gerekir).

2) Aynı anda iki dizi kullanmak mümkün değildir, srand başlatma önceki başlatmayı kullanmayı imkansız hale getirir.

3) Standart rand aralığı, yalnızca 32768 parçaya bölünmeye izin verir ve başka hiçbir şeye izin vermez. 100000'e bölmekten bahsetmiyorum, ancak 10'un herhangi bir katıyla bile aralık bölünemez. Örneğin: bir [-1;1] aralığınız var ve bunu 3. basamağa kadar bir adıma bölmeniz gerekiyor, 2000 aralığı için sınıfı başlatıyoruz, sonra

Rand()/ 1000 .- 1 .

ve 0,001'lik bir adımla [-1;1] aralığından bir PRNG alın

Bunu standart olarak yapmayın.

 
Kim? ne? Görevi nasıl optimize edebileceğimizi söyleyebilir misiniz?
 
Ukrayna :

Rastgele bir dizinin bir kısmını veya tamamını basitçe kopyalamak veya belirli Rand() çağrılarında yayılan değerleri almak için bu işlevlere ihtiyaç duyulabilir.

Standart pek çoğuna uymuyor:

1) 0'dan 100'e kadar düzgün bir şekilde dağıtılmış bir dizi elde etmeniz gerekiyorsa, bunu doğrudan standart olandan alamazsınız (bir algoritma oluşturmanız gerekir).

2) Aynı anda iki dizi kullanmak mümkün değildir, srand başlatma önceki başlatmayı kullanmayı imkansız hale getirir.

3) Standart rand aralığı, yalnızca 32768 parçaya bölünmeye izin verir ve başka hiçbir şeye izin vermez. 100000'e bölmekten bahsetmiyorum, ancak 10'un herhangi bir katıyla bile aralık bölünemez. Örneğin: bir [-1;1] aralığınız var ve bunu 3. basamağa kadar bir adıma bölmeniz gerekiyor, 2000 aralığı için sınıfı başlatıyoruz, sonra

ve 0,001'lik bir adımla [-1;1] aralığından bir PRNG alın

Bunu standart olarak yapmayın.

1) katılıyorum.

2) Belli değil mi? Buna hangi amaçla ihtiyaç duyulabilir?

3) Kodu fazla incelemedim, bu 1) için geçerli gibi görünüyor.

Bu nedenle, bu (yukarıda) iki işlevle ilgili bir soru da vardı.

Böyle bir sınıfa (işlev) kesinlikle ihtiyaç vardır. Ama kimsenin ekstra frene ihtiyacı yok.

 

2. paragrafı anlamakta güçlük çekiyorsanız, belki de önce neden bir PRNG'ye ihtiyacınız olduğuna karar vermeniz gerekir.

O zaman neden aynı anda birbiriyle ilişkisiz iki PRNG dizisine sahip olunduğu netleşecektir.

 
Ukrayna :

2. paragrafı anlamakta güçlük çekiyorsanız, belki de önce neden bir PRNG'ye ihtiyacınız olduğuna karar vermeniz gerekir.

O zaman neden aynı anda birbiriyle ilişkisiz iki PRNG dizisine sahip olunduğu netleşecektir.


Duyması garip - ilişkisiz PRNG dizileri.

Bu sinir ağının ne için olduğunu anlayamıyorum?

 
onun.insan :

Bu sinir ağının ne için olduğunu anlayamıyorum?

Evet, şimdi sadece moda bir şey ...

Ukrayna :

Avantajları : Farklı başlatmalara sahip birkaç rastgeleye sahip olma yeteneği,

Onlar. her nesne kendi sırasını yönetir mi?

Dezavantajları : Srand()'ın başlatılması uzun zaman alır, standart aralık 32768 (766 µs), 1 lam neredeyse 2 dakikadır.

Burası korkutucu, gerçekçi değil. Böyle olmamalı.

Biraz ışık olduğunda bakacağım.
 
onun.insan :

Duyması garip - ilişkisiz PRNG dizileri.

Bu sinir ağının ne için olduğunu anlayamıyorum?

Unutan varsa hatırlatayım, 32768 Rand'a çağrı yapıldıktan sonra (yeniden başlatmazsanız), sıra tekrarlanır, sonra o ve r P sch.

Buna göre, zaman içinde paralel iki dizi oluşturmak için bir başlatma kullanılırsa, bazı bölümlerin birbiriyle korelasyonu olabilir (bu gerekli değildir, ancak böyle bir olasılık kalır).

Ağların farklı algoritmaları vardır, örneğin Montecarlo veya GA, yine herhangi bir algoritmaya sahip her ağ başlangıç ağırlıkları gerektirir.

 
TheXpert :

Evet, şimdi sadece moda bir şey ...

1) yani her nesne kendi sırasını yönetir mi?

2) İşte çok korkutucu, gerçekçi değil. Böyle olmamalı.

Biraz ışık olduğunda bakacağım.

1 Evet, her nesne Srand() sırasındaki diziyi hatırlar, ardından onu standart Rand() gibi bir daire içinde verir.

2 Elimden geldiğince optimize ettim, daha kötüydü.

Kısacası, tırmıklamayı kolaylaştırmak için orada kodladığımı anlatacağım:

hazırlıktan sonra geçici bir diziye artan bir dizi (sayaç değerleri) yazarız, ardından üreteç aralık aralığından bir değer verir (bu indeks temp'den res'e atanırken istenir), değer sonuca verilir verilmez tampon, renge geçici tampon (jeneratörün üretemeyeceği bir değer) koyun. Değerleri res tamponuna bir kontrol ile veriyoruz, eğer bir renge temp olarak yakalanırsa, o zaman res'e zaten böyle bir değer atadık, sonra hızlı bir sıralama yapıyoruz (tüm menzili sonuna kadar sürüyor) dizi) ve aralığı kalan dokunulmamış diziye göre keser. Daha sonra tüm res dolana kadar devam ediyoruz.

 
Ukrayna :

Unutan varsa hatırlatayım, 32768 Rand'a çağrı yapıldıktan sonra (yeniden başlatmazsanız), sıra tekrarlanır, sonra o ve r P sch.

Buna göre, zaman içinde paralel iki dizi oluşturmak için bir başlatma kullanılırsa, bazı bölümlerin birbiriyle korelasyonu olabilir (bu gerekli değildir, ancak böyle bir olasılık kalır).

Ağların farklı algoritmaları vardır, örneğin Montecarlo veya GA, yine herhangi bir algoritmaya sahip her ağ başlangıç ağırlıkları gerektirir.

Bunların hepsi varsayım. Kanıt yok.

GA ile çok şey denedim, PRNG'nin döngüye girdiğine (tekrarlandığına) dair bir şüphe vardı. Anlaşıldı - makara değildi ... (bu benimle ilgili).

Alt satır: PRNG, GA'nın çalışmasını hiçbir şekilde etkilemez.

Başlatma hakkında:

Sıfırlar, PRNG, bir .