Gerçekten ne rasgelelik


23

Ben bir Bilgisayar Bilimleri öğrencisiyim ve şu anda Sistem Simülasyonu ve Modelleme kursuna kayıt oldum. Çevremizdeki gündelik sistemlerle uğraşmayı ve örneğin IID, Gaussian vb. Gibi farklı dağılım eğrilerinde rasgele sayılar üreterek onları farklı senaryolarda simüle etmeyi içerir. Ben boids projesi üzerinde çalışıyorum ve bir soru bana tam olarak "rastgele" olanın gerçekten ne olduğunu sordu? Örneğin, Math.random()Java’daki yöntem gibi programlama dillerimizde bile ürettiğimiz her rasgele sayı , esasen bir "algoritma" izlenerek üretilmektedir.

Ürettiğimiz bir sayı dizisinin gerçekte rastgele olduğunu ve belirli bir modeli mümkün olduğunca doğru bir şekilde simüle etmemizin bize yardımcı olacağını gerçekten nasıl biliyoruz?



Yanıtlar:


18

Kısa cevap, hiç kimsenin gerçek rastgeleliğin ne olduğunu veya böyle bir şeyin var olup olmadığını bilmemesidir. Ayrık bir nesnenin rastgeleliğini ölçmek veya ölçmek istiyorsanız, genellikle Kolmogorov karmaşıklığına dönersiniz . Kolmogorov karmaşıklığından önce, onu doğuran süreci dikkate almadan bir dizi sayının rastlantısallığını ölçmenin hiçbir yolu yoktu.

İşte insanları gerçekten gün içinde canlandıran sezgisel bir örnek. Bir dizi bozuk para fırlatmayı düşünün. Bir vuruşun sonucu ya kafalar ( ) ya da kuyruklar ( ). Diyelim ki iki kez deneyelim, burada 10 kez bozuk para atıyoruz. İlk deney bize . İkinci deney bize . Sonucu gördükten sonra, jetonla ilgili bir sorun olduğunu veya en azından sahip olduğunuzun rastgele olmamakla ilgili garip bir nedenden ötürü bir şeyler olduğunu iddia etmek isteyebilirsiniz . Ama her ikisi de varsayarsak ve ya (sikke adil) muhtemel olarak elde etme ihtimali vardır, T e 1 H , H , H , H , H , H , H , H , H , H E 2 , T , T , H , t , H , t , t , H , t , H e 1 H T e 1 E 2 ( 1 / 2 ) 10 e 2 DHTE1H,H,H,H,H,H,H,H,H,HE2T,T,H,T,H,T,T,H,T,HE1HTE1 veya eşittir . Aslında, elde herhangi spesifik bir diziyi herhangi olarak muhtemel gibidir! Yine de, rastgele hissediyor ve ise yok.E2(1/2)10E2 E1

Genel olarak, Kolmogorov karmaşıklığı hesaplanabilir olmadığı için, bir sayı dizisinin ne kadar rastgele olduğunu söyleyemezsiniz, iddia edilen “tamamen rastgele” işlem ne tür olursa olsun.


Sonsuz diziler için, normallik gibi rastgeleliği tanımlamak için çok daha fazla aracımız var.
Denis

1
@dkuper Kolmogorov karmaşıklığı tanımına göre ilk segmentleri sonsuz rastgele olanın normal olacağına dikkat edin, ancak normal olmak gerçekten rastgele olarak kabul edilebilecek şey için yeterli değildir. Örneğin, ilk segmentleri 0'dan daha büyük 1 olan normal sayılar vardır.
Quinn Culver

@Quinn Culver Evet Katılıyorum, normallik sadece sonsuz diziler için sahip olduğumuz (diğerleri arasında) sahip olduğumuz ek bir araç örneğiydi. Kolmogorov karmaşıklığı ve diğerleri hala faydalıdır.
Denis,

8

aia0,,anai+1

k,l,i:P(ai+1=kai=l){0,1}

Bununla birlikte, bu seriler rastgele sayıların yerine getirdiği özellikleri (örneğin, WP: Autocorrelation ) yerine getirebilir ve bu özellikler genellikle "real" (örneğin bazı fiziksel işlem tarafından oluşturulan) rasgele sayıları kullanmak istediğimiz, ancak bunları yapabiliriz. Onlara çaba gösterme.


3

Belirli bir dizinin rastgele olup olmadığını kesin olarak bilmek imkansızdır. Bununla birlikte, bir dizinin özelliklerine (veya parametrelerine) bakabilir ve ilgilenilen dağılımın verilen böyle bir dizinin olasılığını hesaplayabilirsiniz.

(μ=0,σ=1)1

Daha fazla doğrulama için, dağıtımın ek anlarını (örneğin, çarpıklık gibi) ekleyebilirsiniz. IID numaraları için, aynı zamanda dizinin yaklaşan öğelerini tahmin etmek için bir makine öğrenme algoritması eğitmeye çalışabilir ve daha sonra tarihin performansı geliştirdiği boş hipotezini test edebilirsiniz. Bununla birlikte, bu yöntemlerin hiçbiri bir dizinin gerçekten rastgele olmadığını ispatlayamaz ve en iyi ihtimalle dizilerin rastgele OLMADIĞINI (bir dereceye kadar kesin olarak) tanıyamaz.


3

Modern bilgisayar cevabı cevabı "rastgele bir kaynak, en sevdiğiniz algoritmalar sınıfına rastgele görünen bir kaynaktır" dır. Bu, faydacı bir bakış açısıdır: Eğer bir rastgelelik kaynağı, ilgilendiğiniz tüm algoritmalar için gerçek rastgelelik gibi görünüyorsa, o zaman başka hiçbir şeyin önemi yoktur. Algoritmalarınızı gerçek anlamda rastgele bozuk para atılmış gibi analiz edebilirsiniz ve analiziniz doğru cevapları verecektir.

AA

  • her zaman durduran tüm Turing makineleri
  • tüm polinom büyüklüğü devre aileleri
  • tüm polinom zaman turing makineleri
  • tüm logspace Turing makineleri

A(Xn)Xn{0,1}nϵAAA U n {0,1 } n

|Pr[A(Xn)=1]Pr[A(Un)=1]|ϵ,
Un{0,1}n

Bu fikir, herhangi bir modern resmi taklitçilik kavramı nosyonunun arkasındadır.


2

İşte iki sent daha.

Rasgele algoritmalar hakkında düşünmenin bir yolu, girdi alan, o girdi için gizemli şeyler yapan ve bazı ("öngörülemeyen") çıktılar üreten bir kutuyu resimlemektir.

Fakat bunun yerine, bunları iki girdi alan deterministik algoritmalar olarak düşünmek faydalı olabilir: "gerçek" girdi ve benzeri işlevlerden elde ettiğimiz "rastgele" girdiler Math.Random().

Şimdi algoritmayı analiz ettiğimizde şu gibi ifadeler yapabiliriz: " Eğer rastgele girdilerimiz de tekdüze ve bağımsız ise , o zaman yüksek olasılıkla algoritmamız zamanında çalışıyor " veya "yüksek olasılıkla Cevap doğru ".n günlüğü n[0,1]nlogn

Bu bizim algoritmamızla ilgili gerçek bir gerçektir. Şimdi, ikinci bir soru, rastgele girdilerin gerçekten bu tür varsayımlarla uyuşup uyuşmadığıdır. Bunu söyleyen Bayesian türden bir görüşe bayılırım: Diyelim ki, bilgilerim ve inançlarımın ışığında , girdilerimin rasgeleliği konusunda tek tip ve bağımsızdır . O zaman yukarıda kanıtladığımız gerçeği bana algoritmamın çıktısı hakkında neye inanacağımı söyler (yani, zamanında çalışmanın ya da doğru olmanın çok muhtemel olduğu ).n günlüğü n[0,1]nlogn

Jonathan ve Frafl'ın belirttiği gibi, rastgele bir kaynağın "rastgele" davranıp davranmadığını kontrol etmenin yolları vardır. Ancak tek yapacakları, bu rastgele kaynaktan gelen gelecekteki bilgiler hakkında inandıklarınızı etkilemektir. Önceki bitlerden bağımsız olarak, her bir bitin eşit veya sıfır olması muhtemel olduğunu düşünüyorsanız, o zaman sizin bilginiz ve inançlarınız için en iyisi, bu kaynak düzgün ve bağımsız bir şekilde rastlantısaldır ve bu nedenle bilginiz ve inançlarınız için en iyisidir, hızlı çalışacak ya da doğru vb. Zaten benim felsefi yaklaşımım.


-2

Gerçekten rastgele sayılar üretemeyiz. Belirli bir denklem ve belirli bir tohum değeri kullanarak sözde rasgele sayıların üretilmesi için farklı yöntemler vardır. Bu nedenle, rastgele sayı dizisi, tohum değerine bağlıdır. Tohum değerini öğrendikten sonra, dizinin ne olacağını tahmin edebiliriz. Bunun dışında rasgele sayılar üretmenin başka yöntemleri de var. : İnsanlar artık başvurun bilgisayarda dahil edilebilir disk başı hareketi zaman ve diğer fiziksel yöntemlerle gibi gerçek rasgele sayı üretmek için bazı yöntemler kullanıyor http://en.wikipedia.org/wiki/Random_number_generation#Generation_methods



-3

dediğiniz gibi verilen yöntemi kullanarak Java Randomize'deki
Math.random () yöntemini kullanın ; Rasgele (n); Delphi'de

rastgele sayılar üretmek için kendi yapınızı ve mantığınızı uygulayabilirsiniz
; bu tür "algoritma" daha iyi rastgele sonuçlar için verdiğiniz spesifikasyonlarla gerçekleştirilebilir.
ve bu mantığı üzerine inşa edin.

Teşekkürler.


2
Bu, "bir sekansın rastgele olduğunu nasıl bilebilir?" Sorusuna nasıl cevap verir?
Juho,

söylediğim gibi .just ... "rastgele" nin hile olarak görülebildiği ancak rastgele etkisini etkilemediği için daha sonra gurur duyup mantığınızı yaratın. Basit.
Takma ad

-4

diğer cevaplar iyidir, bu çok önemli / kasıtsız olarak derin olan soru üzerine bazı açılardan bahsedin. bilgisayar uzmanları onlarca yıldır rastlantısallık okuyorlar ve muhtemelen araştırmaya devam ediyorlar. birçok derin bağlantıya sahiptir ve her şeyden önce alanla ilgili açık sorular vardır. İşte birkaç işaretçiler.

  • "gerçek / gerçek rastgelelik", donanım tabanlı RNG'lerde kullanılabilecek düşük seviye fiziksel süreçler ve zener diyotlar, kuantum mekaniği vb. gibi "gürültü" ile oluşur.

  • bilgisayar aleminde üretilen diğer sayılar , "gerçek rastgelelik" ile eşleştirilemeyen ve asla eşleşemeyen " sözderandom" olarak bilinen şeydir . bunlar sözde PRNG’ler.

  • "rasgele sayı üreteçlerinin kriptografik sertliği", bir anlamda "kalitelerini" veya "güvenliğini" ölçen, örneğin, kriptografik olarak güvenli PRNG'yi gören önemli bir anlam ifade eder . Temel olarak "zayıf" bir jeneratör "sert" bir jeneratör kadar hesaplamalı bir karmaşıklığa sahip değildir ve "zayıf" bir jeneratörün kırılması daha kolaydır.

  • O(n)O(n2)=?NP kanıtı belirli bir "karmaşıklığa" sahip olmalıdır, aksi takdirde aynı analiz tekniği PRNG'leri kırmak için kullanılabilir ve dahası, şaşırtıcı bir şekilde, o tarihte (belki de daha sonra bile) bilinen tüm karmaşıklık sınıfı ayrımlarını / tekniklerini yapabilir yeterli karmaşıklığa sahip değil.

  • TCS'deki önemli bir araştırma konusu rastgele ve derandomize edilmiş algoritmalardır . Buradaki düşünce, kabaca, algoritmanın ne kadar değiştirildiğini araştırmak, "gerçek rastgeleliği" bir PRNG ile değiştirmektir ve konuyla ilgili çeşitli derin teoremler vardır. işte bu alanda araştırma yapmak için bazı lezzetler veren yüksek sıralı bir cstheory.se sorusu: determinizmin zor olduğu yerlerde etkili ve basit randomize algoritmalar

  • TCS'deki bir diğer önemli konuyla ilgili konu, yakın zamanda uzun süre önce fizikte tanıtılan - "bilgi düzensizliği" kavramını yakından inceleyen ve (T) CS'deki diğer bazı önemli kavramlar gibi, enine kesişen ana fikirlerden biri gibi görünen bilgi entropisidir. Uygulamalı ve teorik analiz arasındaki sınır, hatta bazı formüllerde aynıdır .

  • Yine aktif araştırmanın durumunu teyit eden cstheory.se üzerinde bu soruya ilişkin başka yüksek dereceli sorular var. işte bir yakın, neredeyse aynı: gerçekten rastgele sayı üreteci


Ve sadece bilgisayar bilimcileri elbette "rastgelelik" ile ilgilenmiyorlar. Muhtemelen dini ve felsefi bakış açılarından da düşünülmüş, eskimeyen bir sorudur.
Juho,

Fizikte ayrıca QM ve Bohr-Einstein tartışması olan Bells thm'in icatında anahtar bir kavram olduğu kabul edildi ve hala aktif bir araştırma alanını "gizli değişken teorileri" motive ediyor . söylediğin gibi, belki de ne olduğunu kimse bilmiyor, ama birçoğumuz konuştuğumuz gibi daha kesin bir cevap bulmak için çalışıyor.
vzn

daha NP açısı vs P rasgelelik uygunluğu, bir Satisfiability ve klik "geçiş noktasında örneğin" olarak gösterir, bu yazıda olarak rastgele grafiğin kon-Klik monoton Karmaşıklık Rossman tarafından
vzn

rasgele sayı üreticilerini kırmak yeniden görmek RNG saldırısı , wikipedia
vzn

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.