Statistical test if one sample is placed higher in rank I have a rank array, say from 0 to 100 (0 being the smallest and 100 being the largest). If my data contains 89, 91, 94, and 98, I can say my data is significantly high in the rank. In other words, my null distribution would be my data is distributed in a uniform fashion across the ranks. 
How can I test this (to get a p-value)?
 A: For each single data point, the $p$-value is the probability to obtain that rank or a higher one. Therefore for 89, the $p$-value would be the number of ranks that high or higher, which is 12, divided by the number of possible ranks overall, 101, with the result $p = \frac{12}{101}$. For your data, the $p$-values are 0.1188, 0.0990, 0.0693, and 0.0297.
If we ignore the issue of dependence, we can use a method of combining $p$-values. One classic approach to do that is Fisher's method, according to which
$$
-2\sum_{i=1}^k \log(p_i)
$$
is $\chi^2$-distributed with $2k$ degrees of freedom. This method tests the null hypothesis that all the sampled ranks are uniformly distributed over the whole range. Applied to your data, this gives an overall $p$-value of 0.0064. Since we have only 4 values out of 101, the induced dependence is probably weak, and since the $p$-value is quite small, we can be confident about the significance of the result.
To account for the dependence, or rather remove it, we can instead consider the ranks in the set after having virtually removed all the other sampled values. E.g. 89 has still the rank 89, but among 98 values, 98 has the rank 95 among 98 values, etc. Using this method, we get the $p$-values 0.0918, 0.0816, 0.0612, 0.0306, and the combined $p$-value 0.0043. It appears that in this case, the dependence made the naive test above too conservative. We are well below the conventional threshold of 0.05, and even below the stricter threshold 0.01, so the answer is, yes, these values are significantly high-ranked.

Previous version:

To account for the dependence, we can adjust the subsequent ranks by removing the previous data. E.g. the second number has rank 91 within the original 101 values, but rank 90 within 100 values after we remove 89, and so on. Using this method, we get the $p$-values 0.1188, 0.1089, 0.0891, 0.0594, and the combined $p$-value 0.0139. The drawback of this approach is that the result depends on the sequence in which the partial $p$-values are computed. Going in ascending order gives particularly large $p$-values, and going in descending order particularly small ones: 0.0297, 0.06, 0.0808, 0.0918, with a combined value of 0.0041. Either way, we are well below the conventional threshold of 0.05, so the answer is, yes, these values are significantly high-ranked.


Here's a Matlab implementation of the final method:
% number of ranks
N = 101;
% ranks go from 0 to N - 1

% sampled ranks
ranks = [89, 91, 94, 98];
n = numel(ranks);

% adjust ranks by virtually removing other sampled values
for i = 1 : n
    r(i) = ranks(i) - sum(ranks < ranks(i));
end
ranks = r;
N = N - n + 1;

% compute single p-values
ps = (N - ranks) / N;

% apply Fisher's method
cs = -2 * sum(log(ps));
df = 2 * n;
p = chi2cdf(cs, df, 'upper')

A: A. Donda's answer seems interesting. It would fit well if there was a replacement process, but maybe - as he pointed out, for the reasons he put forward - a bit conservative.
I think that a more classical way to handle this would be to go for a Wilcoxon test. At least I don't see a specific reason why it would be not adapted for this case.
> selected=c(89,91,94,98)
> all=0:100
> notSelected=all[! all %in% selected ]
> wilcox.test(selected,notSelected,alternative="greater")

    Wilcoxon rank sum test with continuity correction

data:  selected and notSelected
W = 366, p-value = 0.001412
alternative hypothesis: true location shift is greater than 0

A: There are two good answers here.  I thought I might list a couple additional possibilities.  
From your description, it sounds like you are interested in if your ranks are higher than average.  If so, that could be tested with a sign test, i.e., a binomial test of whether the proportion greater than some rank (say 50th) is $>.5$.  Here's a simple example using your data, coded in R:  
binom.test(x=4, n=4)
#   Exact binomial test
# 
# data:  4 and 4
# number of successes = 4, number of trials = 4, p-value = 0.125
# alternative hypothesis: true probability of success is not equal to 0.5
# 95 percent confidence interval:
#  0.3976354 1.0000000
# sample estimates:
# probability of success 
#                      1

On the other hand, if you really want to test if your distribution differs from the uniform distribution, you could use a distribution test, like the Kolmogorov-Smirnov test.  (Note that not being uniform doesn't necessarily mean they're better.)  
ks.test(x=c(89, 91, 94, 98), "punif", min=0, max=100)
#   One-sample Kolmogorov-Smirnov test
# 
# data:  c(89, 91, 94, 98)
# D = 0.89, p-value = 0.0002928
# alternative hypothesis: two-sided

