zerre
BSD ve OSX üzerinde kullanabileceğiniz zerre tek rasgele (dönmek için -r
aralık itibaren) numarayı min
için max
kapsayıcı.
$ min=5
$ max=10
$ jot -r 1 $min $max
Dağıtım sorunu
Maalesef, rastgele oluşturulan sayıların aralığı ve dağılımı, notun içten çift duyarlıklı kayan nokta aritmetiği ve çıktı formatı için printf (3) kullanması, bu da yuvarlama ve kesme sorunlarına neden olur. Bu nedenle, aralıklar min
ve max
gösterilenden daha az sıklıkta üretilir:
$ jot -r 100000 5 10 | sort -n | uniq -c
9918 5
20176 6
20006 7
20083 8
19879 9
9938 10
OS X 10.11'de (El Capitan) bu sorun çözülmüş görünüyor:
$ jot -r 100000 5 10 | sort -n | uniq -c
16692 5
16550 6
16856 7
16579 8
16714 9
16609 10
ve...
$ jot -r 1000000 1 10 | sort -n | uniq -c
100430 1
99965 2
99982 3
99796 4
100444 5
99853 6
99835 7
100397 8
99588 9
99710 10
Dağıtım problemini çözme
OS X'in eski sürümleri için neyse ki birkaç geçici çözüm var. Bunlardan biri printf (3) tamsayı dönüşümünü kullanmak. Tek uyarı, maksimum aralığın şimdi olmasıdır max+1
. Tamsayı biçimlendirmesini kullanarak tüm aralık boyunca adil bir dağılım elde ediyoruz:
$ jot -w %i -r 100000 5 11 | sort -n | uniq -c
16756 5
16571 6
16744 7
16605 8
16683 9
16641 10
Mükemmel çözüm
Son olarak, geçici çözümü kullanarak zarların adil bir şekilde atılması için:
$ min=5
$ max_plus1=11 # 10 + 1
$ jot -w %i -r 1 $min $max_plus1
Ekstra ev ödevi
Kanlı matematik ve biçimlendirme detayları ve daha pek çok örnek için nota (1) bakınız .