Nasıl bilinen min ve max değeri ile sayı aralığını küçültün
Sayılar bir dizi çekmek ve değerleri bir dizi sığdırmak için küçültün nasıl anlamaya çalışıyorum. Bunu istemelerinin sebebi, java swing bir jpanel içinde elips çizmek için çalışıyorum. Her elipsin genişliği ve yüksekliği 1-30 demek aralığında olmak istiyorum. Benim veri kümesinden en küçük ve en büyük değerleri bulmak yöntemler var, ama min ve max kadar zamanı olmayacak. Bir kolay yolu bunu yapmak için vardır?
CEVAP
Hadi [a,b]
4 ** çeşitlilikte. Karşılayan (sürekli) fonksiyonu arıyorsunuz
f(min) = a
f(max) = b
Sizin durumunuzda 1 b
olurdu 30, ama daha basit bir şey ile başlayın ve ne kadar geniş bir alana [min,max]
göster çalışın olur [0,1]
.
Bir işlev min
koyarak ve 0 buradan yapılabilir
f(x) = x - min ===> f(min) = min - min = 0
Bizim istediğimiz neredeyse. Ama max
koyarak bizi biz aslında 1 istediğinizde max - min
verecek. Bu ölçek için elde ederiz:
x - min max - min
f(x) = --------- ===> f(min) = 0; f(max) = --------- = 1
max - min max - min
tam da bizim istediğimiz gibi. Bir tercüman ve bir Ölçekleme yapmamız gerekiyor. Şimdi bunun yerine a
b
, keyfi değerleri almak istiyorsak biraz daha karmaşık ihtiyacımız var:
(b-a)(x - min)
f(x) = -------------- a
max - min
x
min
a
verir ve max
koyarak koyarak b
veren doğrulayabilirsiniz.
Ayrıca (b-a)/(max-min)
yeni aralığın boyutunu ve orijinal aralığının büyüklüğü arasında bir ölçeklendirme faktörü olduğunu fark edebilirsiniz. Yani gerçekten ilk -min
doğru faktörle Ölçekleme x
yazılı ve sonra a
yeni asgari değer geri çevriliyor.
Bu yardımcı olur umarım.
Nasıl sayı değeri tarafından Ruby bir ...
jQuery / Javascript - Nasıl piksel değ...
Nasıl bir dizi belirli bir değeri vars...
Nasıl bir dize bir sayı (yüzen) olup o...
Nasıl C rasgele tamsayı sayı üretmek m...