24.09.2025

Linux'ta terminalde rastgele sayı üretmek

Linux'ta /dev/random ve /dev/urandom gibi iki cihaz var. Bunları kullanarak rastgele sayı üretebilir miyim diye düşündüm. İlk aklıma gelen

cat /dev/random

ile denedim, ctrl+c'ye basanara kadar ekranı anlamsız bir sürü rastgele karakterle doldurdu. Anladım, sadece belli bir miktar (örneğin 1 byte) veri okumamız lazım. Bunu yapmak için de head komutunu kullandım, -c1 parametresiyle.

head -c1 /dev/urandom

Evet, bunun sonucunda /dev/urandom'dan sadece 1 byte uzunluğunda bir veri okundu ama ekrana bunu sayı olarak basmadı. Sayıya çevirmek için od komutunu kullanmak gerekti. Öncelikle görmek istediğim sayı 0 ile 255 arasında bir tamsayı olduğu için bu veri tipini (-t) işaretsiz tamsayı (-u) olarak seçmem gerekti. Uzunluğunu da 1 byte seçtim (-u1)

head -c1 /dev/urandom | od -tu1

Bu da aslında, rastgele sayıların adres bilgilerini de ekrana bastı. Onlardan kurtulmak için ise -An (address none) kullandım:

head -c1 /dev/urandom | od -An -tu1

1 byte'lık bir sayı değil de 4 byte'lık bir sayı isteseydim:

head -c4 /dev/urandom | od -tu1

Ve hatta 2 tane 4 byte'lık veri isteseydim, 8 byte'lık rastgele sayı okuyup, bunu 4'byte'lık biçimlendirmem gerekirdi:

head -c8 /dev/urandom | od -tu4

Hiç yorum yok: