Kapı Açma ve İçerik Dağılımı

Konusu 'Yeni Başlayanlar' forumundadır ve Zer0DayLover tarafından 6 Ağustos 2020 başlatılmıştır.

Değerli forum kullanıcıları,

Bu forumda aktif olabilmen için öncelikle oyun hesabına giriş yapman gerek, aksi taktirde foruma ulaşamassın. Eğer oyun hesabın yok ise, lütfen kendine yeni bir hesap aç. „Oyun için tıkla“
  1. Selamlar herkese ,

    Şimdi yıllardır galaksi kapıları üzerinde çok hurafeler dolaşıyor öncelikle bu ödül sisteminin arkasında nasıl bir algoritma var ondan bahsedeceğim algoritmanın ne anlama geldiğini bilmeyenlere ise kısaca şöyle özetleyeceğim:

    Algoritma bir problemi çözmeye giden yollar silsilesidir kısaca tanım bu şekildedir daha ayrıntılı araştırmak için google'da aramalar yapabilirsiniz.


    Konumuza gelelim:

    Bilgisayarların rastgele sayılar üretemeyeceğini anlatsam bana inanır mısınız ? Yani rastgelelik dediğimiz şey tamamen hiç bir şeye bağımlı olmadan durumları belirtmektir peki bilgisayarlar bu konuda ne kadar başarılıdır sizce ? Aslında pek başarılı sayılmazlar hatta hiç başarılı sayılmazlar çünkü bilgisayarlar insan gibi tamamiyle RASTGELE sayılar veya veriler üretemezler fakat rastgeliliğe yakın bir şeyler yapabilirler dolaylı yoldan , biliyorum bu cümleleri okurken biraz kafanız karışacaktır. Birazdan daha iyi bir şekilde anlayacaksınız.

    Şöyle ki bilgisayar oyunları rastgele değerler üretebilmek için sistem saatini veya işlemci ghz değerlerinden bir kısmını , örneğin bilgisayarınızın 4 Ghz değerinde bir işlemcisi var bu overclocksuz en yüksek ulaşabildiğiniz değer olsun , bilgisayarınız işlem yüküne göre o an o kadar işlemci saat hızını maksimum değere kadar yaklaştırır misal örnek veriyorum 4 Ghz'den daha az değer olan 3,9931235809213893... gibi bir değer var elinizde bunun son hanesini o an alabilirsiniz yada belirttiğiniz aralığa göre bu sayıları alıp çarpıp , toplatıp yeni yeni sayılar üretebilirsiniz fakat genel olarak bilgisayarlar sağ altta bulunan sistem saatini daha çok kullanmaktadır.

    Sebebine gelirsek , sistem saati doğrusal olarak ileriye akar ve bitmek gibi bir huyu yoktur ayrıca şöyle özetlemek gerekirse Unix tabanlı işletim sistemleri 1 ocak 1970 tarihinden intibaren başlangıç kabul etmektedir , bazı algoritmalar misal bu tarih aralığından rastgele bir günün sayı değerini alır ve bunu ekrana yansıtır. Bu en basit örnektir verdiğiniz sayı aralığı kadar gelecek sayılarda büyür. Yada dediğim gibi anlık tarihi alıp bazı matematiksel işlemlerle aralıkta ki sayılardan bir tanesini ekrana basar.

    Birazda örnek olarak bir C# kodu bırakayım:


    1. private readonly Random _random = new Random(); // random sınıfından bir random nesnesi oluşturulur.
    2. public int RandomNumber(int min, int max) // Random sınıfında ki fonksiyonu (metotta denir) minimum ile max değer verilir örneğin minimum değerimiz 1 maksimum değerimiz 100 olsun , burada 1 ile 100 arasında rastgele bir sayı çekecektir.
    3. {
    4. return _random.Next(min, max); }
    Bu kodu visual studio üzerinden çalıştırabilir ve deneyebilirsiniz.

    Şimdi işin teorik kısmını anlattığımıza göre ödül sistemine geçelim , Elinizde çeşitli objeler var diyelim en basidi cephane , galaksi kapısı diyelim , ve biz diyelim ki cephanelere biz bir değer verelim:

    x2 cephanesi: 1-10 arasında bir sayıya denk gelsin
    x3 cephanesi: 20 >x >10 bir sayı olsun yani x 20'den küçük 10 dan büyük bir sayı aralığına denk gelecek bir sayıya gelmesini istiyoruz.
    ""
    ""
    ""

    Bu değerleri tüm diğer diğer objeler için yani kapı parçaları , cephaneler vs için oluşturduğumuzu varsayalım.

    Şimdi biz galaksi kapısından 1-10-100 şeklinde basım yapabiliyoruz peki bu işlem nasıl gerçekleşmektedir ?

    Burada çok boyutlu dizilerden yararlanmamız gerekecek.

    0,1 , 1,0 , 1,1 , 2,0 , 0,2 , 1,2 , 2,1 ,2,2... (sıralı ikililerdir böyle olduğuna bakmayın burada 100'ün 9'lusuda yani 100,9 veya 9,100 veya 0,0,0 veya 0,1,2,3,4 gibi değerler gelebilir olasılık ve ihtimaller ne kadar birbirinden ayılırsa sayı kümeleride o kadar artacaktır kısaca bizim alacağımız ödül cinsi tek tipten çok tipe dönecektir.)

    Şimdi bu değerlerde bizim tecih haklarımızın 10 ve 100'lü değerler arasında olduğunu varsayalım
    1'i saymıyoruz çünkü değer zaten tek bir değer olduğu için tek seçim hakkı yapılacak.

    100'lüye bastığımızda bu yukarıda ki gibi sayı ikilileri veya üçlüleri kısaca arka planda ne kadar bölünmüş ihtimal varsa o kadar sayı geçirilebilmektedir.

    Peki neden 1'de bu tip şeyler yok , aslında bizim sayı aralığımız bellidir , seçim yapmamız gereken aralık 1 tanedir , sistem çok kolay bir şekilde bir değer atayabilir bu durumda fakat 10 veya 100 gibi bir sayı aralığına gelirsek işte o zaman denk gelecek olan ödüllerde birbirinden o kadar uzak olmaktadır.

    Peki bunun sebebi nedir?

    Hiç düşündünüz mü ? Tek tek yani 1 , 1 basan kişiler kapıları çok daha ucuza ve çok daha az maaliyetli açmakta ? Peki bunun sebebi nedir ? Caching dediğimiz bir terimdir , bilgisayarlar aritmetiksel ve mantıksal işlemlerde rastgelelik yakalayabilmek için genelde bir önce ki değeri tutar ve ya bir önce ki değerin aynısı çıkar veya bir öncekine yakın bir değer çıkarırlar. Hatta bunu şuradan örnek vereyim siz google chrome'u kapatın ve sonra aradan vakit geçmeden tekrar açın birde şöyle deneyin 2. testinizi , google chrome'u kapatın ve farklı bir program açın bir 30 saniye ile 1 dakika bekleyin ve sonra tekrar chrome'u açın daha yavaş açılacaktır bunun sebebi önbelleğe alınan hafızada ki verilerin değişmesinden kaynaklıdır.

    100 ve 10'lu denediğimizde arasında ki aralık kavramı yani sayı kavramı çok büyümekte ve bundan dolayı aslında çok daha tuzlu bir şekilde kapıları açmaktasınız.

    Kısaca 1'li basarak daha kolay kapıları açabilirsiniz.

    Umarım anlattıklarım işinize yarar.
     
    Son düzenlenen: 6 Ağustos 2020
  2. _-Thanatos-_

    _-Thanatos-_ Guest

    Merhaba,

    Yeni başlayan oyunculara yönelik böyle bir içerik oluşturduğunuz için teşekkür ederim. İşin içine algoritma girdiğinde tam olarak kesin rakamlar olmasa da Burada oyuncumuzun belirtmiş olduğu Ln tabanlı formül oldukça kullanışlı olduğunu düşünüyorum.

    İyi Forumlar.
     

  3. Kesin sayı olması imkansız zaten bu arada rakamlar 0'dan 9'a olan sayılardır , sayı dediğimiz kavram 0'dan + ve - sonsuza kadar gider bir çok kişi rakam ile sayıyı karıştırmakta ne yazık ki :) Şimdi böyle bir mevzuda ortalama değerler alınır çünkü siz bir sayı aralığı arasında ki bir noktadan sonsuz elemanlı bir kombinasyon çıkabilecek şekilde önünüzde bir algoritma var.

    En basidi siz saat ve tarihe göre alıyorsanız bu işi zaman = + 'a denktir fakat en nihayetinde ne kadar sonsuz gibi gelsede bilgisayarlar ne yazık ki sonsuz değerleri akılda tutamazlar hafızaları yettiği kadar tutabilmekteler...

    Misal 32 bit mimarili olan sistemlerin 2038 yılı problemi vardır , 32 bitlik sistemler 1 ocak 1970'ten intibaren tarihi tuttukları için 2038'e geldikleri zaman ya anakart üzerinde ki mikroişlemci ve komut kümeleri tarihi başa alacak veya fixleme yapıldıysa en son tarihe kadar devam edecek bazıları ise sonsuz bir loop ile her sene +1 değere ekleniyor.

    Neyse konumuza geri dönelim dediğim gibi ortalama değerlere bakabilirsiniz ve attığınız konuda zaten ortalama değerleri almaktadır , ki konumdada ben şu kadar parçaya açarsınız gibi bir iddiada bulunmadım ki bulunamam zaten şayet bulunmuş olsaydım ispat metodunuda yapmak zorunda kalırdım.