Şimdi Ara

C dilinde birbirinden farklı random sayılar atama (4. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
62
Cevap
2
Favori
2.103
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
1 oy
Öne Çıkar
Sayfa: önceki 1234
Sayfaya Git
Git
Giriş
Mesaj
  • quote:

    Orijinalden alıntı: EmuDev

    Ben de hobi olarak retro emulatör geliştirmiştim bir ara. Makinanın ses üreteci çipi noise üretmek için random sayı oluşturması gerekiyordu. Tabi o ilkel cihazlarda şimdiki gibi kompleks trng donanımları olmadığı için basitçe iki biti xor yapıp msb'e kopyalıyordu. Bir kere de sağa iteleyince rastgele bit elde ediliyordu. Eski sistemlerle uğraşmak çok zevkli. Belki de basit oldukları içindir. Modern mimarileri anlamaya ömür yetmez.



    Alıntıları Göster

    Eski Zilog Z80 ve MOS6510 (Commodore) ROM'daki bir BASIC interpreter ile açılırdı biliyorsunuzdur.

    C64 ten emin değilim ama Zilog Z80 tabanlı Akstrad CPC,.her power-up ta random() fonksiyonuna aynı sayıları döndürürdü.


    Tutarlı bir şekilde dijital işlemler yapan bir makinede true random number üretmek imkansızdır diye o nedenle yazmıştım.

    Eski PC'ledeki Gwbasic ve Qbasic de aynı şekilde aynı sayı dizisini üretiyordu yanlış hatırlamıyorsam.

    Bunlar sabit bir diziden değil, bir seed number',ın shift/xor gibi işlemlerden geçirilmesi ile oluşturuyorlardı sayıları.

    Oyunlarda her açılışta aynı anlarda aynı şekilde canavarlar gelirdi o yüzden.

    Ama örneğin Amstrad cpc'de "randomize timer" diye bir rom rutini vardı. Yaptığı iş random number generator algoritmasına seed olarak, bilgisayar açıldığı andan itibaren sayan bir timer'ın değerini vermekti. Böylece daha rastgele gibi gözüken sayılar üretiliyordu.

    Sonuçta programın çalışması için arada bir insan faktörü var. Power-on dan itibaren ilk random üretimi için geçen süre değişiyordu


    < Bu ileti mobil sürüm kullanılarak atıldı >




  • 
Sayfa: önceki 1234
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.