The paper shows how Monte Carlo methods can be improved significantly by conditioning on a suitable variable or vector. In particular this principle is applied to system reliability evaluation. Different choices of variables to condition on lead to different approaches. We start out by using upper and lower bounds on the structure function of the system, and develop an efficient method for sampling from the resulting conditional distribution. Another approach is to use the sum of the component state variables. In relation to this an efficient algorithm for simulating a vector of independent Bernoulli variables given their sum is presented. By using this algorithm one can generate such a vector in O(n) time, where n is the number of variables. Thus, simulating from the conditional distribution can be done just as efficient as simulating from the unconditional distribution. The special case where the Bernoulli variables are i.i.d. is also considered. For this case the reliability evaluation can be improved even further. In particular, we present a simulation algorithm which enables us to estimate the entire system reliability polynomial expressed as a function of the common component reliability. If the component reliabilities are not too different from each other, a generalized version of the improved conditional method can be used in combination with importance sampling. Finally we outline how the two conditioning methods can be combined in order to get even better results.