A寫法是說當k > 5時,則本來的遞增疊加變遞減,
反之當k < -5時,本來的遞減疊加變遞增.
至於為什麼要加絕對值呢?
因為random的值有負數跟正數,所以當k > 5時下一個疊減數若是負數,
則會負負得正而衝出k應小於5的制限,同理應用在k < -5時.
所以只有當k > 5或k < -5時,k -= abs(r)和k += abs(r)才會分別啟動,
若回歸正常的時候,則回歸原本k += r.
//randomSeed(2);
int k = 0;
for(int x = 0; x < 10; x += 1){
int r = int(random(-5,5));
k += r;
if(k > 5){
k -= abs(r);
}
else if(k < -5){
k += abs(r);
}
println(k);
}
B寫法則是當k > 5或k < -5時,則k強制變成4或-4.
也就是說當疊加或疊減再怎麼加或減下去,
k值永遠只固定在4或-4,直到random願意給負數或正數才回彈回去,
但這寫法的缺點是你極有可能會連續停留在4或-4好幾輪才會彈回去.
//randomSeed(2);
int k = 0;
for(int x = 0; x < 10; x += 1){
int r = int(random(-5,5));
k += r;
if(k > 5){
k = 4;
}
else if(k < -5){
k = -4;
}
println(k);
}
沒有留言:
張貼留言