Her dilde bir random komudu vardır. Peki bu randomun altında yatan ve sayıyı rastgele üreten şey nedir? Sayı nasıl rastgele üretilir? Bence bu aslında aldatmaca. Bilgisayar bir değer üretirken illa ki bir şeyleri baz almak zorunda. Yani 0-10 arası rastgele sayı isterken bilgisyar neden 6yı değilde 3ü seçti? Bence bu bir algoritma işi. Eğer değilse de aydınlatın beni, lütfen.
"Kullandığın dil tarihlerin başlangıcını hangi tarih saymışsa, şu anın tarihini o zamandan beri geçen milisaniye miktarı ile, "tick" sayısı ile belirtir. Bu tick sayısı her an için değişir. Bu sayıyı "çekirdek" kabul edip, bazı işlemlerle rastgele sayı üretirler. Bir çok dilde kendiniz "seed" belirleyebiliriz."
üretim için temel esas aldığı şey tick ise algoritma üretmek zor olmasa gerek. Bazı dillerde 0-1 arası sayı üretirken bazı dillerde aralığı kendin belirtirsin. 0-1 arası üretim yapan dillerde şu algoritma uygulanıyor olabilir => tick sayısını 1'den küçük oluncaya kadar sürekli 100'e böl. tick sayısı 150859 olduğunu varsayalım; i) 150859 / 100 = 1508,59 i) 1508,59 /100 =15,0859 i) 15,0859 /100 =0,150859
random sayısı 0.150859 olmuş olur.algoritma olarak nasıl bir yol izlediklerini bilmiyorum sadece örnek verdim.
Arm işlemcilerin birçoğunda ve bazı x64 lerde donanımsal sayı üreteci var. Bunlar çok hızlı şekilde gerçek rastgele sayı üretebiliyor.
Matematikte rastgelelik, raslantı yoktur. Bildiğim kadarıyla Random üretmek için timestamp dayalı işlemler yapılıyor.
Bu iş çok derin bir mevzuudur, halen daha kesin tahmin edilemez random generatör üretilemedi.
İlla derin yapacam diyenler için
Random-number generation is a complex topic. Numerical Recipes in C: The Art of Scientific Computing (William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New York: Cambridge University Press, 2007, 3rd ed.) provides an excellent discussion of practical random-number generation issues in Chapter 7 (Random Numbers).
For a more theoretical discussion which also covers many practical issues in depth, see Chapter 3 (Random Numbers) in Donald E. Knuth's The Art of Computer Programming, volume 2 (Seminumerical Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing Company, 1981.
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme