R [rasgele] olarak rasgele sayı-Set.seed (N)


37

Bu sorunun zaten burada bir cevabı var:

Birinin set.seed()R'de sahte rastgele sayı üretimi için kullandığını fark ediyorum . Ayrıca aynı sayıyı kullanarak, set.seed(123)sonuçları yeniden üretebileceğiniz sigortaları da anlıyorum .

Ama anlamadığım, değerlerin kendileri ne anlama geldiğidir. Birkaç fonksiyonla oynuyorum ve bazıları set.seed(1)ya set.seed(300)da ya da kullanıyor set.seed(12345). Bu sayı ne anlama geliyor (eğer bir şey varsa) - ve ne zaman farklı bir tane kullanmalıyım?

Örnek olarak, üzerinde çalışıyorum - set.seed(12345)karar ağaçları için bir eğitim seti oluştururken kullanıyorlar . Sonra başka bir bölümde, set.seed(300)Rastgele Orman oluşturmak için kullanıyorlar .

Sadece numarayı anlamadım.


6
Bu yardımcı olur mu? stackoverflow.com/questions/14684437/… Ayrıca R içindeki? set.seed () oldukça iyi bilgi sağlar.
doug.numbers

6
Tohum kullanmanın ana noktası, belirli bir 'rasgele' sayı dizisini çoğaltmaktır. Bunu yapabilmek için gerekmiyorsa Genel anlamda, olmaz tohum ayarlayın. Tohumun kendisi rasgele sayı üretecine 'nereden başlayacağını' söylemenin bir yolu dışında doğal bir anlamı yoktur. PIN numarası ile banka hesabınız arasındaki ilişkiyi biraz düşünebilirsiniz. PIN, uzun bir sayı dizisiyle (hesap numaranızla) ilişkilendirilir, ancak doğası gereği yorumlanabilir bir miktar değildir ( bir yorum vardır, ancak ayarı yaparken bunu görmezden gelirsiniz).
Glen_b

4
Kayıt için, 42 her zaman doğru tohum
Repmat

Sadece bir yorum: Sadece (i) bir betiği hata ayıklamak, bazı özel hataları bulmak, vb.
AADF

Yanıtlar:


38

Seçtiğiniz tohum numarası bir rasgele sayı dizisinin oluşturulmasında kullanılan başlangıç ​​noktasıdır, bu nedenle (aynı sözde rasgele sayı üretecini kullanmanız şartıyla) aynı tohum numarası verilen aynı sonuçları elde edersiniz. İkinci sorunuza gelince, Stata'daki eşdeğer işlevselliğin açıklamasından gelen bu kısa snippet yardımcı olabilir:

Bunu yeterince vurgulayamıyoruz: Tohumu çok sık ayarlamayın. Bunun neden bu kadar kötü bir fikir olduğunu anlamak için sınırlayıcı durumu göz önünde bulundurun: Tohumu ayarladınız, bir yalancı sayı çizin, tohumu sıfırlayın, tekrar çizin ve devam edin. Elde ettiğiniz sahte ve sayılar, matematiksel bir işlediğiniz tohumlardan başka bir şey olmayacak. Seçtiğiniz tohumlar rastgele geçmedikçe, elde ettiğiniz sonuçlar rastgele geçmeyecektir. Zaten böyle numaralara sahipseniz, neden sözde rasgele sayı üretecini kullanmak için can atıyorsunuz?

http://www.stata.com/manuals13/rsetseed.pdf


15
Stata'nın bu kadar ilginç belgeleri olduğunu kim bilebilirdi: "Diğerleri rastgele bir sayı oluşturmaya çalışıyor, yeterli rakam içerip içermediklerini bulmakta, sonuç sadece rastlantısal olmak zorundadır. bu kuralların her ikisini de kullanma "
dejenere kendir

4

Kısacası, numaraların kendileri hiçbir şey ifade etmiyor! Başka birinin koduna bakıyorsanız (yukarıda verdiğiniz iki örnekte olduğu gibi), sayılar işlevin işlevselliğini değiştirmez; Belirli işlevler için "iyi" sayılar da yoktur. Sadece yazarların seçimine bağlı.

Ayrıca, tohumunuzu yalnızca bir kez kodunuzda ayarlıyorsanız, istediğiniz herhangi bir numarayı seçebilirsiniz. Biraz dikkatli olmanız gereken tek şey, rastgele sayılar kullanan başka herhangi bir işlevle etkileşime giriyorsanız, açık olmayan bir tohum seçmek iyi olacaktır (bu nedenle, her ikinizin de aynı tohumu kullanması daha az olasıdır) ).

Ancak, Corcovado'nun gerçekten güzel bir şekilde işaret ettiği gibi, bazı uygulamalar için yaptığınız seçim konusunda gerçekten dikkatli olmanız gerekir. Matematiksel olarak, sözde rasgele oluşturulmuş bir dizi sayıya ihtiyacınız varsa, seçtiğiniz sayıların kalıbı olamaz.


1

R'deki set.seed () işlevi (isteğe bağlı) bir tamsayı argümanı alır. Böylece tekrarlanabilir rasgele sayıları elde etmek için 1 veya 123 veya 300 veya 12345 gibi herhangi bir argümanı alabiliriz.

Ayrıca, TeachingDemos paketinde char2seed işlevi, kullanıcının bir karakter dizesini temel alarak tohum ayarlamasını sağlar.

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.