Why does the BER rate change randomly versus the SNR?
There are a few problems with your code:


You are using the index ii not the actual SNR in DB in this line: y= awgn(sFilt,ii,0);
You are not taking into account the filter delay in ySamp = yFilt(os:os:N*os);.  Your filter is filter = rcosine(1/T,os,'sqrt',rolloff); which will design a root-raised cosine FIR filter.  Your filter delay will be (length(filter)-1)/2.