Jump to content

Rastgele Sayı Üretimi


Recommended Posts

Random sayılar; [ ]1,0 aralığında düzgün (üniform) olarak dağılmış, herbirinin seçilme olasılığı diğerine eşit ve meydana geliş sıraları bağımsız olansayılardır (Sarıaslan, 1998: 74)

Rastgele sayı üretiminde en çok bilinen yöntem kafamı karıştırdı. Onu sormak için bu konuyu açtım. Yöntemin ismi "Linear congruential generator"

Formülü şöyle

56cdb2a3e7b9c73522afb08.jpg

yani, rastgele bir sayı elde etmek için bir önceki rastgele sayı b gibi bir sabit ile çarpılıp bir eklenip m gibi diğer bir sabit ile bölümünden kalan sayı hesaplanır. Bu sayının 0 ile m-1 arasında olduğu açıktır. Bu şekilde elde edilen sayılar tabii ki gerçekten rastgele dğildir, sadece başka bir işlem için rastgele görünebileceği umulan sayılar üretilmektedir.

Ve bazı her programlama dillerinde bu değişkenlere sabit değerler verilmiş. http://en.wikipedia.org/wiki/Linear_congruential_generator#LCGs_in_common_use

Buna göre her rastgele sayı üretmeye kalkıştığımızda aynı dizileri üretmez miyiz?

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

Random sayılar; [ ]1,0 aralığında düzgün (üniform) olarak dağılmış, herbirinin seçilme olasılığı diğerine eşit ve meydana geliş sıraları bağımsız olansayılardır (Sarıaslan, 1998: 74)

Rastgele sayı üretiminde en çok bilinen yöntem kafamı karıştırdı. Onu sormak için bu konuyu açtım. Yöntemin ismi "Linear congruential generator"

Formülü şöyle

56cdb2a3e7b9c73522afb08.jpg

Ve bazı her programlama dillerinde bu değişkenlere sabit değerler verilmiş. http://en.wikipedia.org/wiki/Linear_congruential_generator#LCGs_in_common_use

Buna göre her rastgele sayı üretmeye kalkıştığımızda aynı dizileri üretmez miyiz?

---------

A Linear Congruential Generator (LCG) represents one of the oldest and best-known pseudorandom number generator algorithms. The theory behind them is easy to understand, and they are easily implemented and fast.

Altını çizdiğim yerden de anlaşılacağı gibi bu aslında bir rastgele sayı üreteci değil, rastgelemsi sayı dizisi üreteci. Amacı da bir ilk değerden normal dağılımlı (tüm sayıların gelme sıklığının aynı olduğu) bir seri üretmek. Yani bu sadece bir seri üreteci. Seriyi rastgelemsi yapan tek şey de ilk verdiğin değerin rastgelemsiliği.

Programlamada genelde rastgele seri üreteci "seed" denilen bir ilk rakamla başlatılır, sonra oluşturulmuş seriden rakamlar ardışık olarak okunur. Örneğin C++ dilinde bu işlem std::srand (C'de sadece srand) fonksiyonu çağırılarak gerçekleştirilir. srand çağırılırken genelde o anki saniye ya da milisaniye değerine bakılır. Bu yeterli rastgelelik sağlamıyorsa, örneğin program saniyede bir kereden fazla çalışıyorsa o zaman programın işletim sistemi tarafından programcıdan bağımsız olarak atanmış pid değeri de "seed" sayısını oluşturmakta yardımcı olarak kullanılabilir.

Komik gerçek: online gazino gibi ortamlarda seed, generator ve gelen rastgele sayıların kullanım algoritmasını biliyorsan, bu "rastgelemsi"liği kullanarak seriden bir sonraki gelecek rakamı hesaplama şansın var.

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

Komik gerçek: online gazino gibi ortamlarda seed, generator ve gelen rastgele sayıların kullanım algoritmasını biliyorsan, bu "rastgelemsi"liği kullanarak seriden bir sonraki gelecek rakamı hesaplama şansın var.

Emin misiniz ? Örneğin işlemcinin sıcaklık değerini algoraitmaya entegre edemiyor muyuz ?

Link to post
Sitelerde Paylaş

Emin misiniz ? Örneğin işlemcinin sıcaklık değerini algoraitmaya entegre edemiyor muyuz ?

Bu bilgiyi kullanarak seed başlangıç sayısını bildiğiniz takdirde ne yapabileceğinizi belirtmiştim.

Bilmiyorsanız yapacak fazla birşey yok. Brute force ile tek tek bu sayıları üretebilecek üreteç ve seed olasılıklarını deneme yoluna gidilebilir belki.

Link to post
Sitelerde Paylaş

Komik gerçek: online gazino gibi ortamlarda seed, generator ve gelen rastgele sayıların kullanım algoritmasını biliyorsan, bu "rastgelemsi"liği kullanarak seriden bir sonraki gelecek rakamı hesaplama şansın var.

Sevgili Bayşapka onu sormuyorum. Elinde bir tane sayı var. Ve bunu işleyerek bir sayı dizisi oluşturuyorsun. Bu sayı dizisini oluştururken m, a, c değişkenleri belli. http://en.wikipedia.org/wiki/Linear_congruential_generator#LCGs_in_common_use

Buna göre elimizde her zaman aynı dizi oluşmaz mı? Diyelim ki her "rastgele sayı üret" dediğimizde farklı bir tohum sayı (seed) veriyor olsun. Bu da rastgele seçilmesi gerekmiyor mu?

Ve!! Bir dizi oluşturduğumuzda bu dizilerden rastgele nasıl seçeceğiz? Ürettiğimiz diziden her hangi bir sayıyı seç dememiz lazım bunun için. Ama herhangi bir de bir rastgelelik. Rastgelelik oluşturmaya kalkınca yine başka rastgegelikler kullanmak zorunda kalıyoruz. Aklıma yatmadı bu rastgelelik.

http://www.15seconds.com/issue/051110.htm

Burada birisi rnd, randomize vs. komutlarını kullanmadan rastgele sayı ve harf üretmiş. Nasıl yaptığını anlamadım ama yine de konuya katkı olsun diye linkini koyayım. Bunun gibi basit bir visual basic komutu üretebilir misin?

Link to post
Sitelerde Paylaş
Elinde bir tane sayı var. Ve bunu işleyerek bir sayı dizisi oluşturuyorsun. Bu sayı dizisini oluştururken m, a, c değişkenleri belli. http://en.wikipedia....s_in_common_use

Buna göre elimizde her zaman aynı dizi oluşmaz mı?

Oluşur.

Diyelim ki her "rastgele sayı üret" dediğimizde farklı bir tohum sayı (seed) veriyor olsun. Bu da rastgele seçilmesi gerekmiyor mu?

Sayı serisi üretirken seed olabildiğince rastgelemsi olmalı. Seed kaçsa üreteç fonksiyonu da ona göre sayı üretiyor. Aynı seed hep aynı seriyi veriyor. O yüzden prng diyoruz ya. Rastgelelikle prng'lerin tek ilişkisi istatistiksel olarak normal dağılımda sayı üretmeleri. Başka hiçbir özellikleri yok.

Bir dizi oluşturduğumuzda bu dizilerden rastgele nasıl seçeceğiz? Ürettiğimiz diziden her hangi bir sayıyı seç dememiz lazım bunun için.

Rastgele sayı serisi derken dizi veriyapısını kastetmiyoruz. Üretecimiz bize her adımda yeni bir sayı veriyor. Biz de onu bir sonraki rastgelemsi sayı olarak kabul ediyoruz. Bir sonraki adımda da seed o değer oluyor. Bak üreteç fonksiyonuna, rekürsif tanımlanmış. Xn+1 = f(Xn)

Burada birisi rnd, randomize vs. komutlarını kullanmadan rastgele sayı ve harf üretmiş. Nasıl yaptığını anlamadım

Öyle bir kod görmüyorum orada. Rowid'ye göre rastgele string üreten kod var, rnd ve randomize kullanıyor. Ardından da bir prng örneği vermiş. Başkaları yapıyor nasıl oluyor diye kafan karışmasın. Lava lamp ya da background noise gibi gerçekten rastgele bir rastgele sayı kaynağın yoksa Seed ve prng'den kurtulamazsın.

Link to post
Sitelerde Paylaş

gerçek random sayı üretimi için ortamdaki sesler, atmosferik gürültüler ve radyoaktif bozunum ölçümleri kullanılarak bilgisayarda bu ölçülen anlık değerler veya bu şekilde elde edilmiş milyarlarca sayının olduğu veritabanları kullanılıyor.

Detaylı bilgi için :

http://www.random.org/randomness/

http://www.fourmilab.ch/hotbits/

yukarıdaki linklere bakabilirsin.

Sonuç olarak şu anda Psuedo Randon üreteçleri aldıkları ilk Seed'e göre bir seri ürettiklerinden alınan Seed ve oluşacak seri tahmin edilebilir olduğu için yüksek güvenlik gerektiren işler için kullanışsızdırlar.

Link to post
Sitelerde Paylaş

Bence 0 ile sonsuz arasında random sayı elde etmek mümkün değil.

Rastgele dediğiniz her sayının rastgele olmayan bir nedeni var.

Ancak belli sayılar arasında rastgele sayı seçilebilir.

Onları tombalada olduğu gibi bir torbaya doldurur ve birer birer çekersiniz.

O zaman tam rastgele olur.

Tabii seçilen sayı sonsuz olamaz. Sınırlı sayılar arasından rastgele bir sayı seçilebilir.

Link to post
Sitelerde Paylaş

Rasgele sayılar, doğadaki rasgele olaylara endekslenerek elde edilebilir.

Rüzgar hızı, rüzgar yönü, gürültü, kuşların hareketleri, işlek bir caddedeki insan, otomobil hareketleri, dönen bir küredeki pinpon toplarının rüzgar ile karıştırılması vs. gibi hareketlere bağlı düzenekler rasgele sayı üretir.

Sevgiler.

Link to post
Sitelerde Paylaş

Doğada gerçek anlamda rastgelelik yoktur.

Her hareketin, her sesin, her doğal olgunun bir nedeni ve sonucu vardır.

Eksi sonsuzla artı sonsuz arasında dalgalanan sayıları, doğaları gereği, bir takım sofistike formüllerle rastgele seçemezsiniz.

Her kuş sesine bir sayı adadığınızı düşünün...

Kuşlar durduk yerde rastgele mi ses çıkarıyorlar?

Rüzgarlar da öyle. Nedensiz mi esiyorlar. Bir nedenleri, örnekleri, ritimleri var.

Tekrarlıyorlar.

Yine de eğer gerçekten rastgele bir dizi sayı elde edebilirsiniz.

Tombala çekerek.......

Link to post
Sitelerde Paylaş

Bir önceki ileti hakkında, doğada gerçek anlamda rastgelelilik yoktur demişsiniz.

Peki tombalada gerçek anlamda bir rastgelelilik varmı acaba, bir düşünün isterseniz.

Yok. Yine de en yakını o...

Torbayı ne kadar büyük tutarsanız, rastgeleliğe o kadar yaklaşırsınız ama hiç bir zaman ulaşamazsınız.

Gerçek rastgelelikten kastım o. Yoksa gerçek rastgelelik yok. Olasılığın çok düşük olduğu bir durumdur rastgelelik.

Kar tanelerinin birbirlerine benzemediği söylenir.

Ama doğru mu?

Kar tanelerini oluşturan su moleküllerinin dağılımı ile ilgili değişgenler o kadar çoktur ki, iki aynı kar tanesinin olması çok uzak ihtimaldir.

Ama yine de mümkündür.Bu olasılık için 10^-1000 bile deseniz, kuramsal olarak tam anlamı ile rastgele değildir.

Sayılarla ifade edilen, ölçülüp biçilen hiç bir şey rastgele olamaz.

Link to post
Sitelerde Paylaş

Rasgelelikten kasıt nedensellik değildir. Elbette her hareketin bir nedeni vardır.

Rasgelelikten kasıt, amaçsızlıktır.

Amaçsız hareketleri sayılara endeksleyince, rasgele sayı elde etmiş olursunuz. Sonra bu sayıları herhangi bir amaç için kullanabilirsiniz.

Tombala da amaçsız hareketlerin sayıya dönüştürülmesidir.

Sevgiler.

Link to post
Sitelerde Paylaş

Rasgelelikten kasıt nedensellik değildir. Elbette her hareketin bir nedeni vardır.

Rasgelelikten kasıt, amaçsızlıktır.

Amaçsız hareketleri sayılara endeksleyince, rasgele sayı elde etmiş olursunuz. Sonra bu sayıları herhangi bir amaç için kullanabilirsiniz.

Tombala da amaçsız hareketlerin sayıya dönüştürülmesidir.

Sevgiler.

Kuşların cıvıldaması amaçsız mı?

Kaldı ki amaç insansal bir kavram. Doğada yeri yok.

Doğada amaç ne demek?

Link to post
Sitelerde Paylaş

Kuşların cıvıldaması amaçsız mı?

Kaldı ki amaç insansal bir kavram. Doğada yeri yok.

Doğada amaç ne demek?

İnsanı ve bilinci aradan çıkarıdığınızda geri kalan hareketler amaçsız hareketlerdir.

Evet! amaç, canlılarla beraber ortaya çıkmıştır. Canlılara özgüdür. Canlıların yaşamda kalmak gibi, üremek gibi, amaçları vardır.

Sevgiler.

Link to post
Sitelerde Paylaş

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.

Link to post
Sitelerde Paylaş

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.

Sıfırla sonsuz arasında sayı var.

Negatifleri saymıyorum.

Bu aralıkta rastgele sayıyı nasıl üreteceğinizi çok merak ediyorum.

İki sayı arasında rastgele sayı üretmek mümkün. Ama bütün sayılar söz konusu ise üretemezsiniz. Bu absürd bir çaba olur aslında.

En büyük sayının ne olduğunu bilmiyorsunuz.

Negatifleri de dikkate alırsanız, en küçük sayının ne olduğunu da bilmiyorsunuz.

Rastgeleye en yakın sayıları bile bulamazsınız. Çünkü öyle sayı yoktur diyebiliriz.

Aklınıza gelen sayıları teker teker söyleseniz belki o zaman onlar için random diyebiliriz.

Ama üst sınır sorunu her zaman olacak ve o sınır hiç bir zaman hesaba dahil edilemeyecek.

Edilemeyince de çabanız boşa gidecek.

Link to post
Sitelerde Paylaş

Sıfırla sonsuz arasında sayı var.

Negatifleri saymıyorum.

Bu aralıkta rastgele sayıyı nasıl üreteceğinizi çok merak ediyorum.

İki sayı arasında rastgele sayı üretmek mümkün. Ama bütün sayılar söz konusu ise üretemezsiniz. Bu absürd bir çaba olur aslında.

En büyük sayının ne olduğunu bilmiyorsunuz.

Negatifleri de dikkate alırsanız, en küçük sayının ne olduğunu da bilmiyorsunuz.

Rastgeleye en yakın sayıları bile bulamazsınız. Çünkü öyle sayı yoktur diyebiliriz.

Aklınıza gelen sayıları teker teker söyleseniz belki o zaman onlar için random diyebiliriz.

Ama üst sınır sorunu her zaman olacak ve o sınır hiç bir zaman hesaba dahil edilemeyecek.

Edilemeyince de çabanız boşa gidecek.

Haklısınız. Sonsuzluk içinden rastgele sayı seçmek mümkün değil. Zaten maksimum 128 bitlik bir sayı olsun bize fazlasıyla yeter. Bu da 28, 29 basamaklı bir sayıya tekabül ediyor.

Aklıma şöyle bir şey geldi. İçinde bulunduğun saliseyi bir yere kaydedip, saniyesi, dakikası ve saatiyle ilgili işlemler yapacak. Ve iki basamaklı bir sayı üretecek. Eğer üst limit artarsa yeniden sayı üretip o sayının başına yazacak. Mesela sınır 10.000. İlkinde 12 üretti. İkincisinde 25 üretti. Sayımız 2512 olacak. Eğer 1-10 arası üretecekse ürettiği sayının birler basamağını alacak sadece. Burada tek bir sorun var. O da her sayıya eşit muamele edilip edilmemesi. Saliseler 100'er 100'er artıyor. Saniyeler 60'ar, 60'ar, saatler de 24'er 24'er. Sonuç da 2 basamaklı oluyor. Burada bazı sayıların fazlaca tekrarlanması mümkün.

Link to post
Sitelerde Paylaş

Üzerinde;

yüz adet 0

yüz adet 1

yüz adet 2

yüz adet 3

yüz adet 4

yüz adet 5

yüz adet 6

yüz adet 7

yüz adet 8

yüz adet 9

yüz adet .

yazılı 1100 adet yüzerlik top kümelerinin içindeki topların ağırlıkları da bir gramdan başlayıp 100 grama kadardır. Örneğin sıfır sayısı olan toplar bir gramdan başlayıp 100 grama kadar bir dizi oluşturmuştur. (noktalar bir gramdır, diğer rakamlar da aynı ağırlık dizilimindedir) Bütün toplar bir kazana doldurulur. Kazanda bir karıştırıcı topları karıştırmaktadır. Sürekli karıştırılan topların, bir bant üzerinde dizilecek şekilde bir çıkışı vardır. Çıkan iki nokta arasındaki toplar (noktalarla beraber)hareket halindeki 10 kaba boşalmaktadır. ve her kap 150 gram olunca ana kazana dökülmektedir. Belli bir süre karıştırıldıktan sonra, bant çıkışı alınmaya başlanır.

Çıkışdaki iki nokta arasındaki sayılar rasgele sayı olur.

Rasgelelik aralığı bir rakamlı bir sayı ile 1000 rakamlı sayı aralığını içerir.

Sevgiler.

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...