Jump to content

Rastgele Sayı Üretimi


Recommended Posts

gülistenci 128 bitlik aralık ile neyi kastetti bilmiyorum ama.

1000 rakamlı bir sayı evrendeki tüm atomların toplamından fazladır.

Sevgiler

128 bitlik bir sayının rakam sayısı en çok 39 olur.

1000 rakamlı bir sayı çok çok çok çok çok çok fazla. :D

Evrendeki fotonların sayısı dahi 10 üzeri 100 civarında tahmin ediliyor. Yani 100 rakamlı bir sayı ile ifade ediliyor.

Sevgiler

Link to post
Sitelerde Paylaş

Matematiksel ifadesi olmayan ragele sayı üretimi için en basit yol elektronik devreler ile olsa gerek. Elektrik direnci veya diyot ile yapılan basit elektronik devreler direnç veya diyotta oluşan gürültüyü/paraziti (=noise) ölçüyorlar.

Elektrik devreleri İnternette bulmak mümkün.

Sevgiler

Link to post
Sitelerde Paylaş

128 bitlik bir sayının rakam sayısı en çok 39 olur.

1000 rakamlı bir sayı çok çok çok çok çok çok fazla. :D

Evrendeki fotonların sayısı dahi 10 üzeri 100 civarında tahmin ediliyor. Yani 100 rakamlı bir sayı ile ifade ediliyor.

Sevgiler

Ne bileyim, sevgili hacı az buluyor ki,

dünyadaki (evren değil) bütün sayılar bu kadar(cık) mı? diye soruyor.

Sevgiler.

Link to post
Sitelerde Paylaş
gönderildi (düzenlendi)

Zaten maksimum 128 bitlik bir sayı olsun bize fazlasıyla yeter. Bu da 28, 29 basamaklı bir sayıya tekabül ediyor.

128 bitlik bir sayının rakam sayısı en çok 39 olur.

Allah Allah. Elimdeki kitap 128 bitlik ondalık sayının virgülden sonra en fazla 28 basamak olabileceğini söylüyor. Virgülden önce de 1 basamak.

Ama tam sayılar için durum çok farklı görünüyor. Dediğin gibi 39 basamağa kadar çıkabiliyor. Neden acaba? Ondalıklı sayının tek farkı bi sayının herhangi bir yerinde virgül olması. En fazla bir basamak eksiltip 38 basamak olması gerekir gibi geldi bana. Konu içinden konu açılıyo ama olsun.

tarihinde Gucistenci01 tarafından düzenlendi
Link to post
Sitelerde Paylaş

Her ne kadar sayılarla sayılırsa da, sayılar saymak için yokturlar.

Matematiksel hesaplamalar için vardırlar.

Doğal süreçleri, olguları matematikle ifade etmek için vardırlar.

En başta saymak için keşfedilmiş olabilirler ama hemen ardından hesaplamalarda kullanılmaya başlanmış olmalıdırlar.

Link to post
Sitelerde Paylaş

Ne bileyim, sevgili hacı az buluyor ki,

dünyadaki (evren değil) bütün sayılar bu kadar(cık) mı? diye soruyor.

Sevgiler.

Sevgili drekinci.

Psikolojik bir sorun olsa gerek. Hepimizin başındaki bir bela. Rakam sayısının azlığından dolayı olsa gerek, büyük sayıların ne ifade etmek istediklerini kavramakta, hayal etmekte hepimiz zorlanıyoruz.

Hani bilirisin... Bir satranç sorusu vardı... Satranç oyununun 1. karesine 1 buğday, 2. karesine 2 buğday, 3. karesine 4 buğday vs. vs. verilecek. Kısacası, her kareye bir önceki karenin 2 katı buğday verilecek. Bu 64. kareye kadar böyle gidecek. Toplam buğday sayısı ne kadardır (=18 446 744 073 709 551 615) diye sorulur. Sadece 20 rakamlı bu sayı ilk bakışta pek bir şey ifade etmiyor.

Ama...

Bu buğdayları kamyonlara yükleseydik, kamyonları peşpeşe sıralasaydık ve bir F16 uçağı bu konvoyu bir baştan diğer başa kadar uçsaydı (saatta 2000 km hızla) ... Kaç tane pilotun ömrü biterdi? diye sorulduğunda/hayallendiğinde, sadece 20 rakamı bulunan bu sayının korkunçluğu biraz da olsa belli oluyor.

Aynı soruda ufak bir değişiklik yaparsak: 1. kareye 1, 2. kareye 2 buğday tanesi koyuyoruz. 3. kareye 2. karedeki buğday sayısının karesi kadar, yani 2*2 = 4 tane. 4. kareye 3. karedeki buğday sayısının karesi kadar, yani 4*4=16 tane vs. Yani her kareye bir önceki karedeki buğday sayısının karesi kadar buğdauy konulduğunda... Toplam buğday sayısı nedir? sorusunun cevabı ise inanılmaz korkunç. Toplam buğday sayısından vaz geçtim. Sadece 64. kareye konulması gereken buğday sayısı dahi hayal dünyasını aşıııııııp gidiyor. (evrensel-insan isimli bir katılımcıdan okudum sorunun bu halini.)

Sevgiler

Link to post
Sitelerde Paylaş

Allah Allah. Elimdeki kitap 128 bitlik ondalık sayının virgülden sonra en fazla 28 basamak olabileceğini söylüyor. Virgülden önce de 1 basamak.

Ama tam sayılar için durum çok farklı görünüyor. Dediğin gibi 39 basamağa kadar çıkabiliyor. Neden acaba? Ondalıklı sayının tek farkı bi sayının herhangi bir yerinde virgül olması. En fazla bir basamak eksiltip 38 basamak olması gerekir gibi geldi bana. Konu içinden konu açılıyo ama olsun.

Sevgili Gucistenci01.

Bir yanlış anlaşılma olması gerek. Belki elindeki kitap başka bir şeyden bahsediyordur.

128 bitlik bir sayı, ondalık sayı olarak da olsa, virgülden sonra 39 tane rakamlı bir sayıyı ifade edebilir.

Normalinde 1 bit işaret için (artı/eksi) kullanılır. Geriye 127 bit kalır. Ama 127 bit de virgülden sonra 39 rakamlı bir sayıya denk gelir.

Virgülden sonra 28 rakamlı bir sayı için 96 bit yeterlidir.

Sevgiler

Link to post
Sitelerde Paylaş
gönderildi (düzenlendi)

How to generate Random numbers without using Rnd() ?

http://www.allinterview.com/showanswers/70292.html

Bu sitede belli ki uzun bir süredir duran bir soru? Ama burada uzun süre durmayacak. Yoğun bir şekilde araştırıyorum. Bulacam o kodları. Bilen varsa ve yazarsa memnun oluruz tabi.

Olayın mantığını kavradım. Basit bir Visual Basic kodu hazırladım.

Function rastgele(ByVal enalt As Long, ByVal enust As Long) As Long
       Dim a As Long = 1664525
       Dim c As Long = 1013904223
       Dim sabit As Integer = (Date.Now.Millisecond)
       Dim sonuc As Long
       sonuc = ((sabit * a) + c) Mod enust
       If sonuc < enalt Then 
           sonuc = enust - ((enalt - sonuc) Mod (enust - enalt))
       End If
       Return sonuc
   End Function

Herhangi bir komuta

MsgBox(rastgele(800, 1000))

yazarsanız o komut aktif hale gelince 800,1000 arası sayıyı mesaj kutusunda size gösterir. Ama sayılar tamamen rastgele değil. Bazı sayılara daha iyi muamele yapıldığı belli oluyor. if li kısım olmasaydı biraz daha sağlam rastgele olacaktı. Ama o zaman da en alt sayı her zaman 0 olacaktı.

tarihinde Gucistenci01 tarafından düzenlendi
Link to post
Sitelerde Paylaş
gönderildi (düzenlendi)

Sevgili Gucistenci01.

Bir yanlış anlaşılma olması gerek. Belki elindeki kitap başka bir şeyden bahsediyordur.

128 bitlik bir sayı, ondalık sayı olarak da olsa, virgülden sonra 39 tane rakamlı bir sayıyı ifade edebilir.

Normalinde 1 bit işaret için (artı/eksi) kullanılır. Geriye 127 bit kalır. Ama 127 bit de virgülden sonra 39 rakamlı bir sayıya denk gelir.

Virgülden sonra 28 rakamlı bir sayı için 96 bit yeterlidir.

Sevgiler

Sevgili DMA VB dilinde benim dediğim gibi. http://msdn.microsoft.com/en-us/library/xtba3z33.aspx

Program 12 byte'lık kısmını sayı için ayırıyor. Acaba geriye kalan 4 byte'ı ne yapıyor? :)

tarihinde Gucistenci01 tarafından düzenlendi
Link to post
Sitelerde Paylaş

Yeni doğan bebeklere cinsiyetlerine göre rakamlar verirsek örneğin, kız doğanlara 1, erkek doğanlara 2, çift yumurta ikizleri 3, tek yumurta ikizler 4 diye simgeleştirirsek rastgele sayı dizilimi elde etmiş oluruz. Hastanenin doğum servisinde çalışan bir tanıdığım bu yolla toto oynardı.

Ancak olaya istatistiksel bakarsak, toplam doğum içinde erkek yüzdesi ile kız yüzdesi bellidir. Aynı şekilde ikizlerin oranlarıda bellidir. Bu rakamlar sanki kemikleşmiş gibi her yıl kendisini tekrarlamaktadır.

Böyle olunca insan kendisine sormadan edemiyor, bu rastlantı bize göre rastlantıdır, oysa bilgimiz eksik olmasaydı bu süreçler bizim için rastlantı olmaktan çıkacaktı. Yoksa rastlantı, bilmediğimiz şeylere verdiğimiz bir isim midir?

Link to post
Sitelerde Paylaş

Sevgili DMA VB dilinde benim dediğim gibi. http://msdn.microsof...y/xtba3z33.aspx

Program 12 byte'lık kısmını sayı için ayırıyor. Acaba geriye kalan 4 byte'ı ne yapıyor? :)

Sevgili Gucistenci01.

Verdiğin linkte de belirtildiği gibi, sayı için 128 bitin sadece 96 biti kullanılıyor ve bu da virgülden sonra 29 rakamlı sayılara denk geliyor.

Geriye kalan 4 bytelık (32 bit) kısmı organize/yönetim için kullanılıyor olsa gerek.

Verdiğin linkde bunun bir nedenine değinilmiş: Virgülün konulacağı yere sen kendin karar verebiliyorsun.

Yani virgülden sonra kaç rakam gelmesi gerektiğini kendin beliriyorsun. Virgülden sonra gelecek rakamlar 0 ile 28 arası olabiliyor.

Sevgiler

Link to post
Sitelerde Paylaş

Olayın mantığını kavradım. Basit bir Visual Basic kodu hazırladım.

Function rastgele(ByVal enalt As Long, ByVal enust As Long) As Long
Dim a As Long = 1664525
Dim c As Long = 1013904223
Dim sabit As Integer = (Date.Now.Millisecond)
Dim sonuc As Long
sonuc = ((sabit * a) + c) Mod enust
If sonuc < enalt Then 
sonuc = enust - ((enalt - sonuc) Mod (enust - enalt))
End If
Return sonuc
End Function

Herhangi bir komuta

MsgBox(rastgele(800, 1000))

yazarsanız o komut aktif hale gelince 800,1000 arası sayıyı mesaj kutusunda size gösterir. Ama sayılar tamamen rastgele değil. Bazı sayılara daha iyi muamele yapıldığı belli oluyor. if li kısım olmasaydı biraz daha sağlam rastgele olacaktı. Ama o zaman da en alt sayı her zaman 0 olacaktı.

Eğer gerçekten rasgele sayılarsa, verdiğin sayı aralığındaki her hangi bir sayının çekilme olasılığı diğer her sayının çekilme olasılığına eşit olması gerekir.

Tabi sayıların periodik olarak çıkmaması da gerekiyor.

Standart sapmanın ne kadar düşük olması gerektiği konusunda bir şey diyemiyeceğim.

Bu yöntem ile mesela 1 milyon tane sayı üretsen ve hangi sayı kaç sefer çıktı diye baksan?

Bir olasılık/sayı (y/x) diyagramı üzerinde gösterildiğinde, çıkan sayıların "rasgelelik kalitesi" hakkında bilgi verir sanırım.

Sevgiler

Link to post
Sitelerde Paylaş

Eğer gerçekten rasgele sayılarsa, verdiğin sayı aralığındaki her hangi bir sayının çekilme olasılığı diğer her sayının çekilme olasılığına eşit olması gerekir.

Tabi sayıların periodik olarak çıkmaması da gerekiyor.

Standart sapmanın ne kadar düşük olması gerektiği konusunda bir şey diyemiyeceğim.

Bu yöntem ile mesela 1 milyon tane sayı üretsen ve hangi sayı kaç sefer çıktı diye baksan?

Bir olasılık/sayı (y/x) diyagramı üzerinde gösterildiğinde, çıkan sayıların "rasgelelik kalitesi" hakkında bilgi verir sanırım.

Sevgiler

Onu başka zaman denerim artık. Programı dün silmiştim.

Link to post
Sitelerde Paylaş

Eğer gerçekten rasgele sayılarsa, verdiğin sayı aralığındaki her hangi bir sayının çekilme olasılığı diğer her sayının çekilme olasılığına eşit olması gerekir.

Tabi sayıların periodik olarak çıkmaması da gerekiyor.

Standart sapmanın ne kadar düşük olması gerektiği konusunda bir şey diyemiyeceğim.

Bu yöntem ile mesela 1 milyon tane sayı üretsen ve hangi sayı kaç sefer çıktı diye baksan?

Bir olasılık/sayı (y/x) diyagramı üzerinde gösterildiğinde, çıkan sayıların "rasgelelik kalitesi" hakkında bilgi verir sanırım.

Sevgiler

Sevgili DMA

Verdiğim kodda 1000 farklı kök sayı var. Program mili saniyeyi saniyenin binde biri olarak almış. Yazdığım kodda elimizde 1000 sayıyı işleyerek en fazla 1000 farklı sayı oluşturabiliyoruz. En alt ve en üst sayı arasında 1000 civarı arasında bir fark olursa biraz düzgün sayılar elde edilebilir. Ama en alt ve en üst sayı arasında 1.000.000 fark varsa ona da rastgele denilir mi sen karar ver.

Ama önce de yazıldığı gibi tv cızırtısından rastgele sayılar üretilebilir. Hem de sadece siyah ve beyaz renkler cızırtı oluştursa bile 8x8 piksellik ekran bile bize 64 bitlik rastgele bir sayı verir.

tarihinde Gucistenci01 tarafından düzenlendi
Link to post
Sitelerde Paylaş
  • Konuyu Görüntüleyenler   0 kullanıcı

    Sayfayı görüntüleyen kayıtlı kullanıcı bulunmuyor.

×
×
  • Yeni Oluştur...