C Programlama #16 | Rastgele Sayılar: rand ve srand — Neden Hep Aynı Sayı?
Rastgele Sayılar ve enumEğitmen: Dr. Süleyman Burak ÇELİK
30 kişilik bir sınıftan rastgele bir öğrenci seçen program, üç kez çalıştırınca üçünde de 8 numarayı seçiyor. On altıncı derste C'nin rastgele sayılarını, rand ve srand fonksiyonlarını gerçek çalıştırmalarla inceliyoruz. rand'ın 0 ile RAND_MAX arasında bir tam sayı döndürdüğünü ve programı her çalıştırdığımızda aynı diziyi verdiğini görüyoruz. Nedeni: rand aslında bir formül. Bu Mac'teki rand bir sonraki sayıyı bir öncekinden hesaplıyor (16807 ile çarpıp 2147483647'ye bölümden kalanı alıyor); ilk üç değeri elle de buluyoruz. Bu yüzden bunlara sözde rastgele sayılar denir. Aynı program gerçek bir Linux sunucusunda başka bir diziyle başlıyor ve orada öğretmen hep 14 numarayı seçiyor; ama orada da her çalıştırmada aynı dizi geliyor. Ölçekleme ve kaydırmayı (1 + rand() % 30) sayı şeritleriyle açıklıyor, zarı 600 bin kez atıp her yüzün yaklaşık eşit sıklıkta geldiğini sayıyoruz. srand ile tohumu değiştiriyor (aynı tohum, aynı dizi), srand(time(NULL)) ile her çalıştırmada farklı bir dizi alıyoruz. Son olarak iki tuzak: 15 + rand() % 10 ile 25'in hiç gelmemesi (genişlik 25 − 15 + 1 = 11) ve srand'i döngünün içinde çağırınca beş zarın beşinin de aynı gelmesi. Ekrandaki her çıktı, kodun gerçekten derlenip çalıştırılmasından geliyor. Bu derste: 1. rand(): 0 ile RAND_MAX arasında sözde rastgele tam sayı 2. rand'ın arkasındaki formül ve neden hep aynı dizi geldiği 3. Ölçekleme ve kaydırma: a + rand() % b 4. srand ile tohum; srand(time(NULL)) ile her çalıştırmada farklı dizi 5. Tuzaklar: aralık genişliği ve srand'i döngüde çağırmak Bölümler: 0:00 Programlara biraz şans: rastgele sayılar 0:16 30 kişilik sınıftan rastgele bir öğrenci 0:34 rand(): 0 ile RAND_MAX arasında 0:59 rand aslında bir formül 1:41 Ölçekleme ve kaydırma 2:14 Bu zar adil mi? 600000 atış 2:45 srand: tohum 3:17 srand(time(NULL)): tohum olarak saat 3:42 Aralık tuzağı: 15 ile 25 arası 4:16 Son tuzak: srand döngünün içinde 4:36 Bugünün dört kuralı 5:05 Sonraki ders: zar oyunu ve enum Kaynak kitap: Paul Deitel, Harvey Deitel — C How to Program, 9. baskı (2022), §5.10. Konu sırası ve kavramlar kaynak kitaptan izlenir; anlatım, örnekler ve ekranlar özgündür. Hedef kitle: C'ye yeni başlayan tüm mühendislik ve bilgisayar/yazılım öğrencileri. Ön koşul: C Programlama #01–#15.
Bu videoyu izlemek için Premium üyelik gerekir.