Bilgisayarlar rasgele sayıları nasıl üretir?


3

Bu stackexchange sitesinde sorduğum tek soru bu olabilir. Programlamada, farklı dillere bağlı olarak rasgele sayılar üretmenin birçok farklı yolu vardır. Bir süredir beni rahatsız eden şey, ancak NASIL üretilen herhangi bir bilgisayar rastgele olabilir? Bu yazıyı buldum ancak çok iyi karşılanmadı ve geniş ya da birçok olası cevaba ulaştı. Ancak onu görebildiğim tek olası cevap var, nasıl çalışıyor! Yani, bilgisayar geçmişi olan birisinin bu soruyu cevaplayabilmesi gerektiğini, bu yüzden fikrini istediğim gibi olmadığını söylemek istiyorum. Son bir not olarak yanlış forumda olursam özür dilerim.


Buradaki cevaplar TAMAM, ama iddiaya girerim güvenlik sitesinde bir sürü cevap almış olsaydın. Güvenli bir şekilde rasgele sayılar oluşturmak, şifreleme için son derece önemlidir. Son derece karmaşık ve farklı karmaşıklık ve performansa sahip çok çeşitli teknikler var. security.stackexchange.com/questions/tagged/prng security.stackexchange.com/questions/tagged/random
Zoredache

Yanıtlar:


3

Bilgisayara bağlı olarak yapabilirler ve yapamazlar. Genellikle, sözde rasgele bir algoritma. En eski algoritmalardan biri temelde sadece tohum denilen bir sayı üzerinde bir dizi temel aritmetik (çarpma, bölme, toplama, çıkarma, modülo) yapmak ve ortadaki sayıları almak gibi bir şeydi. Sayılar rastgele görünür, ancak belirli sayıda denemeden sonra, aynı döngü kendini tekrar eder.

Bu, şifrenizi şifrelemek için bir PRNG kullanamayacakları anlamına gelir. PRNG'ler genellikle sistem zamanını tohum olarak kullanırlar, eğer saldırgan şifrenizin şifreli olduğu yaklaşık süreyi biliyorsa (hesap oluşturma zamanı, şifre değiştirme zamanı), o zaman aralığını kullanarak küçük bir şifre aralığı oluşturabilir ve tüm izin verilen tüm olası kombinasyonları oluşturmak yerine şifre oluşturdunuz.

Daha önce www.random.org adresine gittiyseniz, muhtemelen rasgele sayılar ürettiklerini göreceksiniz. Bunun nedeni, atmosferik gürültü veya bazı gürültülü atmosferik veri toplamak için aygıtlar kullanmaları ve bunu kullanmalarıdır.

Bu konuda uzman değilim, ancak bazı işletim sistemlerinin şifreleri şifrelemek için yeterince güvenli numaralar üretmek için kullanıcının fare hareketinden ve klavye preslerinden bir PRNG ile birlikte veri toplayabileceğini düşünüyorum.


2
İyi bir PRNG zamana göre ekilmeyecek, ancak yine de nispeten az miktarda bir bilgiden ekilebilir (bu kaba kuvvet için pratik değildir, ancak zaman zaman kötü bir kaynaktan geliyorsa tahmin edilebilir).
user20574 20.05

3

Onlar değil

Sözde Rastgele Sayı Üreticileri (PRNG'ler) olarak bilinen algoritmaları kullanırlar . Başlamak için benzersiz bir "tohum" numarası vermediğiniz sürece bunlar her zaman aynı sayı dizisini oluşturur.

Bir tohum numarası, göreceli olarak rastgele kaynakların bir kombinasyonundan oluşturulabilir - örneğin şu andaki milisaniyenin son birkaç hanesi, fare işaretçisinin son birkaç hareketi.

Sonuç, birçok amaç için tahmin edilemeyecek kadar rastgele bir sekansa benzeyen sayılar dizisidir.


vay ben milisaniye şu anki zaman kadar minik bir şey kullanmak olsa bile, sadece rastgele bir sayı oluşturmak için kullanılan herhangi bir yöntemin rastgele olamayacağını varsaymıştım.
SempreAmbroscus

-2

İşte ödevlerimden birinin kod pasajı. Rastgele sayılar oluşturur ve daha sonra rastgele sayının diziye daha önce yerleştirilip yerleştirilmediğini kontrol eder ve eğer girmediyse girmesine izin verilir ve kullanılmazsa kullanılır.

public static int[] RandomArray(int RandArrayNValue)
    {         
        int[] array = new int[RandArrayNValue];

        Random rand = new Random();

        for (int i = 0; i < RandArrayNValue; i++)
        {
            array[i] = i + 1;
        }

        Console.WriteLine();

        for (int i = array.Length - 1; i >= 0; i--)
        {
            int Store = rand.Next(i);

            int TempStore = array[Store]; 

            array[Store] = array[i];

            array[i] = TempStore;
            Console.WriteLine(" " + array[i]);
        }
        return array;
    }

1
OP, rastgele sayıların bu düzeyde nasıl çalıştığının farkındadır: "Programlamada, farklı dillere bağlı olarak rasgele sayılar oluşturmanın birçok farklı yolu vardır." Soru, bir bilgisayardan gelen herhangi bir şeyin, bir bilgisayar tamamen deterministik olduğunda nasıl rastgele olabileceği ile ilgilidir.
tsleyson

1
Random()sihir değil - bu soru nasıl çalıştığıyla ilgili.
NReilingh
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.