def plot_normal_cdf(rbound=None, lbound=None, mean=<NUM_LIT:0>, sd=<NUM_LIT:1>):
shade = rbound is not None or lbound is not None<EOL>shade_left = rbound is not None and lbound is not None<EOL>inf = <NUM_LIT> * sd<EOL>step = <NUM_LIT:0.1><EOL>rlabel = rbound<EOL>llabel = lbound<EOL>if rbound is None:<EOL><INDENT>rbound = inf + mean<EOL>rlabel = "<STR_LIT>"<EOL><DEDENT>if lbound is None:<EOL><INDENT>lbound = -inf + mean<EOL>llabel = "<STR_LIT>"<EOL><DEDENT>pdf_range = np.arange(-inf + mean, inf + mean, step)<EOL>plt.plot(pdf_range, stats.norm.pdf(pdf_range, loc=mean, scale=sd), color='<STR_LIT:k>', lw=<NUM_LIT:1>)<EOL>cdf_range = np.arange(lbound, rbound + step, step)<EOL>if shade:<EOL><INDENT>plt.fill_between(cdf_range, stats.norm.pdf(cdf_range, loc=mean, scale=sd), color='<STR_LIT>')<EOL><DEDENT>if shade_left:<EOL><INDENT>cdf_range = np.arange(-inf+mean, lbound + step, step)<EOL>plt.fill_between(cdf_range, stats.norm.pdf(cdf_range, loc=mean, scale=sd), color='<STR_LIT>')<EOL><DEDENT>plt.ylim(<NUM_LIT:0>, stats.norm.pdf(<NUM_LIT:0>, loc=<NUM_LIT:0>, scale=sd) * <NUM_LIT>)<EOL>plt.xlabel('<STR_LIT:z>')<EOL>plt.ylabel('<STR_LIT>', rotation=<NUM_LIT>)<EOL>plt.title("<STR_LIT>"<EOL>"<STR_LIT>".format(mean, sd, llabel, rlabel), fontsize=<NUM_LIT:16>)<EOL>plt.show()<EOL>
Plots a normal curve with specified parameters and area below curve shaded
    between ``lbound`` and ``rbound``.

    Args:
        ``rbound`` (numeric): right boundary of shaded region

        ``lbound`` (numeric): left boundary of shaded region; by default is negative infinity

        ``mean`` (numeric): mean/expectation of normal distribution

        ``sd`` (numeric): standard deviation of normal distribution