Pi'yi ham rasgele sayı üreticisi olarak kullanabilir misiniz?


30

Geçenlerde bu soruyu matematikte gördüm. Beni düşündürdü. Pi bir ham rasgele sayı üreteci olarak kullanılabilir mi? Sonuçların iyi bilindiğini (pi'nin şu ana kadar ne kadar süredir hesaplandığı?) Ancak Pi, bir seferde 1 basamak alındığında oldukça rastgele görünüyor.

Bu hiç mantıklı geliyor mu?


Bu rastgele sayılar nerede kullanılacak?
NullUserException

2
Teorik olarak olabilir, ancak muhtemelen mevcut yöntemlerden daha az optimal olacaktır. Sadece içgüdüleri var ama görünüşe göre daha az ek yük ile rastgele havuz daha büyük görünüyor.
Rig

@NullUserException Emin değilim ... Sadece ALL ALL kullanılıp kullanılamayacaklarını merak ediyordum. Bunun kesinlikle kriptografi için uygun olmayacağını tahmin ediyorum '
Earlz

3
@FrustratedWithFormsDesigner - ent paketinin bir parçası. Bir kareye yazılan bir çemberin alanını hesaplamak için rasgele sayıları kullanır ve ondan bir kişi pi hesaplayabilir. Pi bitlerini rasgele sayılar olarak kullanarak, bu verileri pi'yi hesaplamak için kullanmak için belirli bir zarafet vardır.

1
@FrustratedWithFormsDesigner ent , bir grup baytın sahte rastgeleliğini analiz etmek için kullanılan bir kod paketidir. Bunun içindeki bir test pi'nin hesaplanması ve rastgele hesaplamanın gerçek değerle karşılaştırılmasının ne kadar rastgele olduğunu görmek için bir Monte Carlo'dur.

Yanıtlar:


50

Dan Kazı http://www.befria.nu/elias/pi/binpi.html pi ikili değeri elde etmek (yani oldukça ondalık basamak kullanmaya çalışmak yerine bayt dönüştürmek daha kolay olduğunu) ve daha sonra akıtarak ent Bayt rasgele dağılımının bir analizi için aşağıdakileri alıyorum:

Entropi = bayt başına 7.954093 bit.

En iyi sıkıştırma, bu 4096 bayt dosyanın boyutunu yüzde 0 oranında azaltır.

4096 örnek için ki-kare dağılımı 253.00'dır ve rasgele zamanın yüzde 52,36'sı bu değeri aşacaktır.

Veri baytlarının aritmetik ortalaması 126.6736 (127.5 = rasgele).

Pi için Monte Carlo değeri 3.120234604 (hata yüzde 0,68).

Seri korelasyon katsayısı 0.028195'tir (tamamen ilişkilendirilmemiş = 0.0).

Yani evet, rasgele veriler için pi kullanmak, oldukça iyi rastgele veriler olduğunu fark ederek ... oldukça rasgele veriler verecektir.


Yukarıdaki bir yorumdan ...

Ne yaptığınıza bağlı olarak, ancak herhangi bir asal sayının karekökü ondalık sayılarını rasgele sayı üreteci olarak kullanabilirsiniz. Bunlar en azından eşit şekilde dağılmış rakamlara sahip olmalıdır. - Paxinum

Bu yüzden, aynı problemleri çözmek için 2'nin karekökünü ikili olarak hesapladım. Wolfram'ın İterasyonunu kullanarak basit bir perl betiği yazdım.

#!/usr/bin/perl
use strict;
use Math::BigInt;

my $u = Math::BigInt->new("2");
my $v = Math::BigInt->new("0");
my $i = 0;

while(1) {
    my $unew;
    my $vnew;

    if($u->bcmp($v) != 1) { # $u <= $v
        $unew = $u->bmul(4);
        $vnew = $v->bmul(2);
    } else {
        $unew = ($u->bsub($v)->bsub(1))->bmul(4);
        $vnew = ($v->badd(2))->bmul(2);
    }   

    $v = $vnew;
    $u = $unew;

    #print $i,"  ",$v,"\n";
    if($i++ > 10000) { last; }
}

open (BITS,"> bits.txt");
print BITS $v->as_bin();
close(BITS);

Bunu ilk 10 eşleştiren A095804 için çalıştırdım, bu yüzden dizilimin olduğundan eminim. V değeri , n ilk basamak sonra yer alan ikili noktası ile ikili olarak yazılmış olduğu gibi 2 kare kökünün bir yaklaşım sağlar.

Bu ikili verilere karşı ent kullanılması aşağıdakileri sağlar:

Entropy = 7.840501 bits per byte.

Optimum compression would reduce the size
of this 1251 byte file by 1 percent.

Chi square distribution for 1251 samples is 277.84, and randomly
would exceed this value 15.58 percent of the times.

Arithmetic mean value of data bytes is 130.0616 (127.5 = random).
Monte Carlo value for Pi is 3.153846154 (error 0.39 percent).
Serial correlation coefficient is -0.045767 (totally uncorrelated = 0.0).

Tam olarak aradığım cevap türü. Bu tür şeylerin nasıl hesaplanacağı hakkında hiçbir fikrim yok
Earlz

Sayı dağılımı oldukça rasgele olsa bile, bir kısmını rasgele seçmenin bir yolunu bulmanız gerekmez mi?
Blumer

1
@Blumer no. Rasgelelik, bir dizi sayıyla ölçülür. Pi rakam dizisinin rastgele olduğu söylenir. Bakınız en.wikipedia.org/wiki/Statistical_randomness
Simon Bergot 20:12

11
Kesinlikle doğru. Ve iyi bilinen rastgele veriler olduğu için, bunu kriptografik amaçlar için kullanmaya cüret etme.
Şahin

3
"İyi bilinen rastgele veriler" için +1. Birisinin tahmin edemediği rastgele verilere ihtiyacınız varsa, pi sizin için değil, bir nedenden ötürü sadece bir grup rasgele sayıya ihtiyacınız varsa, bu iyi sonuç verir.
jmoreno

5

Peki, rastgele bir sayı üreticisinin diğer özellikleri arasında muhtemelen normal bir sayı olmasını istersiniz . Ve matematikte bazı cevaplar. Sorunuza ilham veren soru, şu anda pi'nin normal olduğuna inanılıyor, ancak kanıtlanmamıştır.


2

Bu tür bir üretici, sözde sayı üreticisi olacak, yani aynı tohum verildiğinde sonuç her zaman aynı olacaktır. Bu, çoğu çerçevede, standart rasgele sayı üretecini kullandığınızda, sözde rastgele olmanın aynı sorunu olduğunu söylüyor.

Rakamların dağılımı, standart rasgele sayı üreteçlerine quite oldukça benzer görünüyor, bu nedenle π rakamları sıradan rasgele sayı üretme senaryoları için kullanılabilir.

Mesele şu ki, algoritma sıradan rasgele sayı üreteçleriyle karşılaştırıldığında muhtemelen çok yavaş olacak, bu yüzden pratikte pek kullanışlı değil.


True Bunun doğru olduğuna inanıyorum, ancak kanıtı yok. Çok sayıda sayıya dayanarak bir karşılaştırma yapmak ilginç olurdu (ve karmaşıklaştırmamak).


5
@NullUserException: Hayır, bazı rasgele sayı üreticileri bir entropi kaynağı kullanır. Bu, özel donanım ( random.org tarafından uygulanan yaklaşım ) veya mevcut entropi kaynakları (mevcut donanım sensörleri içindeki ölçülebilir dalgalanmalar, belirli kullanıcı etkileşimi türleri, belirli performans test türlerinde mikro varyasyonlar vb.) Kullanılarak yapılabilir. ).
Brian

1
@NullUserException: Hala sözde rastgele olan kriptografik olarak güvenli PRNG var. Sonra gerçek dünyadan gelen girdilere dayanan gerçek RNG var: radyoaktif bozulma, gürültü, vs.
Arseni Mourzenko 19:12

2
@MainMa Ancak o zaman bile, radyoaktif bozunumun rastgeleliği, kullanıcı girdilerinden elde edilen atmosferik gürültü, vb. Tartışılabilir. Sırf bir modeli tanımadığımızdan, varlığın var olmadığı anlamına gelmez.
NullUserException

1
@NullUserException: Geçen yıl Colbeck / Renner ispat etmeyi öne süren bir makale yayınladı: "Kuantum teorisinin genişletilmesinin tahmine dayalı gücü arttırılamaz". Bunun devam edeceğini varsayarsak, tahmin edilemeyecek kadar gerçekte öngörülemeyen bir entropi kaynağı olabilir.
Brian

1
@MainMa - hala rasgelelik için matematiksel testler yaparsınız. Temel fizik rastgele olsa bile (bilgimizin en iyisine) bu ölçüm olduğu anlamına gelmez. Her tür dedektörlerin gerçek dünyada çok sayıda 'ilginç' davranışları vardır
Martin Beckett

2

Pi rakamlarının rastgele olması (veya bunun için herhangi başka bir sıra için) tartışmalı olarak 'pil testleri' ile test edilebilir. Popüler bir akü testi, George Marsaglia'nın Diehard Akü Testi'dir . Ayrıca, bir dizi test ve bu testlerin bir milyon bitin üzerinde bir süre için kullanılmayan bir dizi fiziksel sabite uygulanmasının sonuçlarını tanımlayan NIST Special yayın 800-22 de bulunmaktadır. Pi sonucu raporun Ek B kısmında verilmiştir ve şöyle görünür:

Statistical Test                            P-value
Frequency                                   0.578211
Block Frequency (m = 128)                   0.380615
Cusum-Forward                               0.628308
Cusum-Reverse                               0.663369
Runs                                        0.419268
Long Runs of Ones                           0.024390
Rank                                        0.083553
Spectral DFT                                0.010186
Non-overlapping Templates (m = 9, B = 000000001)          0.165757
Overlapping Templates (m = 9)               0.296897
Universal                                   0.669012
Approximate Entropy (m = 10)                0.361595
Random Excursions (x = +1)                  0.844143
Random Excursions Variant (x = -1)          0.760966
Linear Complexity (M = 500)                 0.255475
Serial (m = 16, 2m∇Ψ )                      0.143005

Pi iyi bir rasgele dizilim üreteci midir? Yukarıdaki sonuçlara bakın (veya ne anlama geldiklerini bilmiyorsanız, sol sütun değişkeninin anlamlarını arayın) ve ihtiyacınızı karşılayıp karşılamadığını kontrol edin.


1
Diehard için beni oku, yaklaşık 10-12 megabaytlık ikili veriye ihtiyaç duyduğunu söylüyor (bulabildiğim en iyi 32 kilobayt). Ascii verilerine karşı koştu, test uygulamanın beklediği şeyden oldukça uzak olurdu.

Cevabım OP sorusu ve Math.SE'deki orijinal soruydu - ikisi de ascii'ye karşı ikili veriler ya da örneğin uzunluğu hakkında hiçbir şeyden bahsetmedi. Yeterince büyük bir örneklem kümesi olmadan, herhangi bir dizinin istatistiksel rastgeleliği nasıl belirlenebilir?
sm535
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.