Ana içeriğe geç
Programlama

Modülo ile rastgele seçim yöntemleri dağılım sapmasına yol açıyor

Öne çıkanlar

  • Modülo operatörüyle aralık daraltmak tekdüze dağılımı bozarak yüzde 10'a varan sapmalar yaratıyor.
  • Kayan noktalı sayılar yerine bağıl tamsayı ağırlıkları kullanmak hassasiyet hatalarını önlüyor.
  • Geliştirici ekip kod tabanındaki ham rastgele sayı çağrılarını kaldırarak ağırlıklı seçim modeline geçti.

Yazılım geliştirmede belirli bir kümeden rastgele eleman seçmek için büyük bir tamsayı üretip bunu modülo operatörüyle sınırlamak yaygın bir yöntem olarak kullanılıyor. Austin Seipp, yayımladığı teknik incelemede bu yaklaşımın alttaki tekdüze dağılımı bozduğunu ve belirli seçenekleri diğerlerine göre daha avantajlı hale getirdiğini belirtti. Seipp, 10 olasılıktan üç seçeneğe eşleme yapıldığında ilk seçeneğin yüzde 40, diğer iki seçeneğin ise yüzde 30 oranında seçildiğini somut verilerle ortaya koydu.

Makalede, doğrudan rastgele tamsayı üreten düşük seviyeli işlevler yerine ağırlıklı dağılımları destekleyen üst seviye arayüzlerin kullanılması gerektiği aktarıldı. Kayan noktalı sayıların hassasiyet ve toplama sorunları yaratması nedeniyle bağıl tamsayı ağırlıklarının daha kararlı bir mimari sunduğu vurgulandı. Python gibi modern dillerin standart kütüphanelerinde bu mantığı benimsediği ve tamsayı aralıklarını bölerek haritalama yaptığı kaydedildi.

Antithesis platformu üzerinde deterministik test süreçleri yürüten ekip, sistem genelinde ham rastgele sayı üretimini tamamen terk etti. Kod tabanında yapılan denetim sonrasında tüm düşük seviyeli çağrılar ağırlıklı seçim fonksiyonlarıyla değiştirildi ve yeni kontrolsüz rastgele fonksiyon kullanımlarına kısıtlama getirildi.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.