Rasgele sayılar ve çok çekirdekli paket


15

R'de programlama yaparken, çok çekirdekli paketi birkaç kez kullandım. Ancak, rastgele sayıları nasıl işlediğine dair bir açıklama görmedim. OpenMP'yi C ile kullandığımda, uygun bir paralel RNG kullanmaya dikkat ediyorum, ancak R ile mantıklı bir şey olduğunu varsayıyorum. Herkes mantıklı bir şey olduğunu doğrulayabilir mi?

Misal

Dokümantasyondan,

x <- foreach(icount(1000), .combine = "+") %do% rnorm(4)

rnorm` Nasıl üretilir?

Yanıtlar:


8

Ben emin nasıl değilim foreacheserleri (doMC paketinden, sanırım), ancak çok çekirdekli içinde gibi bir şey yaptıysam parametre varsayılan her sürecini farklı bir tohum (örn veren ). Kodunuzun benzer bir şeye çevrildiğini varsayıyorum, yani aynı sözleşmeye sahip çağrılara kaynar .mclapplymc.set.seedTRUEmclapply(1:1000, rnorm)parallel

Ayrıca , teorik garantili paralel bağımsız akışlar için rlecuyer paketini öneren Charlie Geyer'in slaytlarının 16. sayfasına bakın . Gayzer sayfasında ayrıca farklı kurulumlar için R'de örnek kod bulunur.


7

Bundan sayfa 5 bakmak isteyebilirsiniz belgenin ve bunun belgenin . Varsayılan olarak, R altında, her çekirdek setleri kendi tohumudur (yüksek hassasiyetli zamanı kullanarak hatırlıyorum).

Not: Eğer pencerelerin altında Devrim-bilgisayar dan foreach () kullanırsanız o zaman ben şüpheli bir şey mantıklı olacaktır değil olur. Windows POSIX uyumlu değildir ve her bir çekirdeğin farklı bir yüksek önceliğe ihtiyacı olduğunda bu sorun yaratacaktır. tohum ayarlamak için başlangıç ​​zamanı (ne yazık ki ben bu ampirik olarak kontrol edemez pencereler kullanışlı yok).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.