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:
Yorum Gönder