Diff for /doc/homework/homework5.html between versions 1.1 and 1.14

version 1.1, 2001/05/19 00:24:39 version 1.14, 2002/05/03 18:34:20
Line 4 Line 4
     <title>LON-CAPA Homework System</title>      <title>LON-CAPA Homework System</title>
   </head>    </head>
   
   <body>    <body bgcolor="white">
     <h1>LON-CAPA Homework System</h1>      <h1>LON-CAPA Homework System</h1>
   
     <h2>Tags</h2>      <h2>Tags</h2>
Line 31 Line 31
  </p>   </p>
  <ul>   <ul>
   <li>    <li>
       <b>&lt;responseparam&gt;</b> if it appears it should be
       inside of a &lt;*response&gt; tag, defines an externally
       adjustable parameter for this question. Arguments:
       <ul>
         <li>
    <i>default</i> required, specifies a default value for
    the parameter
         </li>
         <li>
    <i>name</i> required, specifies an internal name for
    the parameter
         </li>
         <li>
    <i>type</i> required specifies the type of parameter,
    one of "tolerance", "int", "float", "string", "date"
    (configuration of paramters is handled by
    lonparmset.pm and parameter.html)
         </li>
         <li>
    <i>description</i> a string describing the parameter,
    this is what is used to talk about a parameter outside
    of a problem
         </li>
       </ul>
     </li>
     <li>
     <b>&lt;numericalresponse&gt;</b> implements a numerical      <b>&lt;numericalresponse&gt;</b> implements a numerical
     answer, it needs an internal <b>&lt;textline&gt;</b> for      answer, it needs an internal <b>&lt;textline&gt;</b> for
     the response to go in. It checks all styles of numerical      the response to go in. It checks all styles of numerical
     supported in CAPA. Possible args are:      supported in CAPA. Possible args are:
     <ul>      <ul>
       <li><i>answer</i> required, specifies the correct answer, must be a perl list</li>        <li><i>answer</i> required, specifies the correct answer, may be either a perl list or scalar</li>
       <li><i>type</i> optional, CAPA style str args, cs/ci/mc</li>  
       <li><i>units</i> optional, specifies unit of correct answer, CAPA style</li>        <li><i>units</i> optional, specifies unit of correct answer, CAPA style</li>
     </ul>      </ul>
   </li>    </li>
   <li>    <li>
       <b>&lt;stringresponse&gt;</b> implements a string answer,
       it needs an internal <b>&lt;textline&gt;</b> for the
       response to go in. It can check the string for either case
       or order.
       <ul>
         <li><i>answer</i> required, specifies the correct answer, may be either a perl list or scalar</li>
         <li><i>type</i> optional, CAPA style str args, cs/ci/mc
    <ul>
     <li>cs - case senesitive, order important</li>
     <li>ci - case insenesitive, order important</li>
     <li>mc - case insenesitive, order unimportant</li>
    </ul>
         </li>
       </ul>
     <li>
     <b>&lt;essayresponse&gt;</b> implements a ungraded large      <b>&lt;essayresponse&gt;</b> implements a ungraded large
     text response, it need an internal <b>&lt;textarea&gt;</b>      text response, it need an internal <b>&lt;textarea&gt;</b>
     for the response to go in.      for the response to go in.
Line 82 Line 122
     <i>value</i> of a &lt;foil&gt;can only be "true" or      <i>value</i> of a &lt;foil&gt;can only be "true" or
     "false" or "unused"      "false" or "unused"
   </li>    </li>
     <li>
       <b>&lt;dataresponse&gt;</b> implements a straight data
       storage entry idea, needs and interveing input tag like
       &lt;textline&gt; to work correctly.<br>
       Arguments:
       <ul>
         <li>
    <i>name</i> internal name for the value, it will have
    the part id and respose id added on to it
         </li>
         <li>
    <i>type</i> type of data stored in this response
    field, should be one of the types supported by
    parameter.html
         </li> 
         <li>
    <i>display</i> a string that will be used to describe
    the field when interfacing with humans
         </li>
       </ul>
     <li>
  </ul>   </ul>
  <li>   <li>
  <a name="foil">Foil Structure Tags</a>   <a name="foil">Foil Structure Tags</a>
Line 175 Line 236
     <b>&lt;window&gt;</b> the text in between is put in a      <b>&lt;window&gt;</b> the text in between is put in a
     popup javascript window      popup javascript window
   </li>    </li>
     <li>
       <b>&lt;m&gt;</b> the inside text is LaTeX, and is
       converted to HTML (or MathML) on the fly, if the argument
       <i>eval</i> is set to "on" the intervening text will have
       a perl var expansion done to it before being converted.
     </li>
  </ul>   </ul>
       </li>        </li>
       <li>        <li>
Line 227 Line 294
   </li>    </li>
   <li>    <li>
     <b>&lt;randomlist&gt;</b> the enclosed tags are parsed in      <b>&lt;randomlist&gt;</b> the enclosed tags are parsed in
     a stable random order      a stable random order, optional argument <i>show</i>
       restricts the number of tags indie that are actually
       parsed the no more than <i>show</i>.
   </li>    </li>
   <li>    <li>
     <b>&lt;solved&gt;</b> everything inside the tag is      <b>&lt;solved&gt;</b> everything inside the tag is
Line 274 Line 343
     <h2>&lt;script&gt; Functions</h2>      <h2>&lt;script&gt; Functions</h2>
     <p>       <p> 
       A list of functions that have been written that are available in         A list of functions that have been written that are available in 
       the Safe space scripting environment inside a problem. The eventual        the Safe space scripting environment inside a problem. 
       goal is to provide all of the functions available in CAPA  
     </p>      </p>
     <ul>      <ul>
         <li>sin(x), cos(x), tan(x)</li>
         <li>asin(x), acos(x), atan(x), atan2(y,x)</li>
         <li>log(x), log10(x)</li>
         <li>exp(), pow(x,y), sqrt(x)</li>
         <li>abs(x), sgn(x)</li>
         <li>erf(x), erfc(x)</li>
         <li>ceil(x), floor(x)</li>
         <li>min(...), max(...)</li>
         <li>factorial(n)</li>
         <li>N%M</li>
         <li>sinh(x), cosh(x), tanh(x)</li>
         <li>asinh(x), acosh(x), atanh(x)</li>
         <li>roundto(x,n)</li>
         <li>web("a","b","c") or web(a,b,c)</li>
         <li>html("a") or html(a)</li>
         <li>j0(x), j1(x), jn(n,x), jv(y,x)</li>
         <li>y0(x), y1(x), yn(n,x), yv(y,x)</li>
       <li>random</li>        <li>random</li>
       <li>tan</li>  
       <li>atan</li>  
       <li>acos</li>  
       <li>asin</li>  
       <li>log10</li>  
       <li>pow</li>  
       <li>ceil</li>  
       <li>floor</li>  
       <li>format</li>  
       <li>map</li>  
       <li>choose</li>        <li>choose</li>
         <li>tex("a","b") or tex(a,b)</li>
         <li>var_in_tex(a)</li>
         <li>to_string(x), to_string(x,y)</li>
         <li>class(), section()</li>
         <li>name(), student_number()</li>
         <li>open_date(), due_date(), answer_date()</li>
         <li>sub_string()</li>
         <li>array_moments(array)</li>
         <li>format(x,y)</li>
         <li>map(...)</li>
       <li>caparesponse_check</li>        <li>caparesponse_check</li>
       <li>caparesponse_check_list</li>        <li>caparesponse_check_list</li>
     </ul>      </ul>
   <!-- Table inserted by H. K. Ng 
       06/01/2001
       06/12/2001
   -->
       <p> 
         Detailed descriptions of each function and comparison with CAPA.
       </p>
   
     <table border=1>
         <tr>
               <td valign="top"><b>CAPA Functions</b</td>
               <td valign="top"><b>LON-CAPA</b</td>
               <td valign="top"><b>Descriptions</b</td>
               <td valign="top"><b>Differences (if any)</b</td>
        </tr>
   
       <tr>
                <td valign="top">sin(x), cos(x), tan(x)</td>
                <td valign="top">&amp;sin($x), &amp;cos($x), &amp;tan($x)</td>
                <td valign="top">Trigonometric functions where x is in radians. $x
            can be a pure number, i.e., you can call &amp;sin(3.1415)</td>
                 <td valign="top">&nbsp</td>
       </tr>
   
       <tr>
                <td valign="top">asin(x), acos(x), atan(x), atan2(y,x)</td>
                <td valign="top">&amp;asin($x), &amp;acos($x), &amp;atan($x), &amp;atan2($y,$x)</td>
                <td valign="top">Inverse trigonometric functions. Return value is
                    in radians. For asin and acos the value of x must be between -1 and 1.
                    The atan2 returns a value between -pi and pi the sign of which is determined
                    by y. $x and $y can be pure numbers</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">log(x), log10(x)</td>
                <td valign="top">&amp;log($x), &amp;log10($x)</td>
                <td valign="top">Natural and base-10 logarithm. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">exp(x), pow(x,y), sqrt(x)</td>
                <td valign="top">&amp;exp($x), &amp;pow($x,$y), &amp;sqrt($x)</td>
                <td valign="top">Exponential, power and square root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x.                  $x and $y can be pure numbers</td>
   
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">abs(x), sgn(x)</td>
                <td valign="top">&amp;abs($x), &amp;sgn($x)</td>
                <td valign="top">Abs takes the absolute value of x while sgn(x) returns
                    1, 0 or -1 depending on the value of x. For x>0, sgn(x) = 1, for x=0, sgn(x)
                    = 0 and for x&lt;0, sgn(x) = -1. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">erf(x), erfc(x)</td>
                <td valign="top">&amp;erf($x), &amp;erfc($x)</td>
                <td valign="top">Error function.&nbsp; erf = 2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i>                 erfx(x)</i> = 1.0 - <i>erf(x)</i>.&nbsp; $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">ceil(x), floor(x)</td>
                <td valign="top">&amp;ceil($x), &amp;floor($x)</td>
                <td valign="top">Ceil function returns an integer rounded up whereas
                    floor function returns and integer rounded down. If x is an integer than
                    it returns the value of the integer. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">min(...), max(...)</td>
                <td valign="top">&amp;min(...), &amp;max(...)</td>
                <td valign="top">Returns the minimum/ maximum value of a list of
                    arguments if the arguments are numbers. If the arguments are strings then
                    it returns a string sorted according to the ASCII codes</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">factorial(n)</td>
                <td valign="top">&amp;factorial($n)</td>
                <td valign="top">Argument (n) must be an integer else it will round
                    down. The largest value for n is 170. $n can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">N%M</td>
                <td valign="top">$N%$M</td>
   
                <td valign="top">N and M are integers and returns the remainder (in
                    integer) of N/M. $N and $M can be pure numbers</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">sinh(x), cosh(x), tanh(x)</td>
                <td valign="top">&amp;sinh($x), &amp;cosh($x), &amp;tanh($x)</td>
                <td valign="top">Hyperbolic functions. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">asinh(x), acosh(x), atanh(x)</td>
                <td valign="top">&amp;asinh($x), &amp;acosh($x), &amp;atanh($x)</td>
                <td valign="top">Inverse hyperbolic functions. $x can be a pure number</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">/DIS($x,"nn")</td>
                <td valign="top">&amp;format($x,"nn")</td>
                <td valign="top">Display or format $x as nn where nn is nF or nE and n is an integer.</td>
                <td valign="top">&nbsp;The difference is obvious.</td>
       </tr>
   
       <tr>
                <td valign="top">roundto(x,n)</td>
                <td valign="top">&amp;roundto($x,$n)</td>
                <td valign="top">Rounds a real number to n decimal points. $x and
                    $n can be pure numbers</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">web("a","b","c") or web(a,b,c)</td>
                <td valign="top">&amp;web("a","b","c") or &amp;web($a,$b,$c)</td>
                <td valign="top">Returns either a, b or c depending on the output
                    medium. a is for plain ASCII, b for tex output and c for html output</td>
                <td valign="top">&nbsp</td>
       </tr>
   
       <tr>
                <td valign="top">html("a") or html(a)</td>
                <td valign="top">&amp;html("a") or &amp;html($a)</td>
                <td valign="top">Output only if the output mode chosen is in html
                    format</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">jn(m,x)</td>
                <td valign="top">&amp;j0($x), &amp;j1($x), &amp;jn($m,$x), &amp;jv($y,$x)</td>
                <td valign="top">Bessel functions of the first kind with orders 0,
                    1 and m respectively. For jn(m,x), m must be an integer whereas for jv(y,x),
                    y is real. $x can be a pure number. $m must be an integer and can be a
                    pure integer number. $y can be a pure real number</td>
                <td valign="top">In CAPA, j0, j1 and jn are contained in one function,
                    jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x) is new to LON-CAPA.</td>
       </tr>
   
       <tr>
                <td valign="top">yn(m,x)</td>
                <td valign="top">&amp;y0($x), &amp;y1($x), &amp;yn($m,$x), &amp;yv($y,$x)</td>
                <td valign="top">Bessel functions of the second kind with orders
                    0, 1 and m respectively. For yn(m,x), m must be an integer whereas for
                    yv(y,x), y is real. $x can be a pure number. $m must be an integer and
                    can be a pure integer number. $y can be a pure real number</td>
                <td valign="top">In CAPA, y0, y1 and yn are contained in one function,
                    yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x) is new to LON-CAPA.</td>
       </tr>
   
       <tr>
                <td valign="top">random(l,u,d)</td>
                <td valign="top">&amp;random($l,$u,$d)</td>
                <td valign="top">Returns a uniformly distributed random number between
                    the lower bound, l and upper bound, u in steps of d. $l, $u and $d can
                    be pure numbers</td>
                <td valign="top">In CAPA, all the 3 arguments must be of the same
                    type. However, now you can mix the type</td>
       </tr>
   
       <tr>
                <td valign="top">choose(i,...)</td>
                <td valign="top">&amp;choose($i,...)</td>
                <td valign="top">Choose the ith item from the argument list. i must
                    be an integer greater than 0 and the value of i should not exceed the number
                    of items. $i can be a pure integer</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">/MAP(seed;w,x,y,z;a,b,c,d)</td>
                <td valign="top">Option 1 - &amp;map($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) or <br> 
                     Option 2 - &amp;map($seed,\@mappedArray,[$a,$b,$c,$d]) <br>
                     Option 3 - @mappedArray = &amp;map($seed,[$a,$b,$c,$d]) <br>
                     Option 4 - ($w,$x,$y,$z) = &amp;map($seed,\@a) <br>
                     where $a='A'<br>
                           $b='B'<br>
                           $c='B'<br>
                           $d='B'<br>
                           $w, $x, $y, and $z are variables</td>
                <td valign="top">Assigns to the variables $w, $x, $y and $z the values of the
                     $a, $b, $c and $c (A, B, C and D). The precise value for $w .. depends
                     on the seed. (Option 1 of calling map). 
                     In option 2, the values of $a, $b .. are mapped into the array, @mappedArray. The two
                     options illustrate the different grouping. Options 3 and 4 give a consistent 
                     way (with other functions) of mapping the items. For each option, the group can
                     be passed as an array, for example, [$a,$b,$c,$d] => \@a.</td>
                <td valign="top">In CAPA, the arguments are divided into three groups separated
                     by a semicolon ;. In LON-CAPA, the separation is done by using [] brackets or
                     using an array @a. Note the backslash (\) before the arguments in the
                     second and third groups.</td>
       </tr>
   
   
       <tr>
                <td valign="top">rmap(seed;a,b,c,d;w,x,y,z)</td>
                <td valign="top">Option 1 - &amp;rmap($seed,[\$w,\$x,\$y,\$z],[$a,$b,$c,$d]) or <br> 
                     Option 2 - &amp;rmap($seed,\@rmappedArray,[$a,$b,$c,$d]) <br>
                     Option 3 - @rmapped_array = &amp;rmap($seed,[$a,$b,$c,$d]) <br>
                     Option 4 - ($w,$x,$y,$z) = &amp;rmap($seed,\@a) <br>
                     where $a='A'<br>
                           $b='B'<br>
                           $c='B'<br>
                           $d='B'<br>
                           $w, $x, $y, and $z are variables</td>
                <td valign="top">The rmap functions does the reverse action of map if the same seed
                     is used in calling map and rmap. </td>
                <td valign="top">In CAPA, the arguments are divided into
                three groups separated by a semicolon ;. In LON-CAPA, the
                separation is done by using [] brackets (with create an
                unamed vector reference) or using an array @a. Note the
                backslash (\) before the arguments in the second and
                third groups (Which cause Perl to send to variable
                locations rather than the variable values, similar to a C
                pointer).</td>
       </tr>
         
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">$a=&amp;xmlparse($string) </td>
                <td valign="top">Runs the internal parser over the
     argument parsing for display. <b>Warning</b> This will
     result in different strings in different targets. Don't use
     the results of this function as an answer.</td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
   
       <tr>
                <td valign="top">tex(a,b), tex("a","b")</td>
                <td valign="top">&amp;tex($a,$b), &amp;tex("a","b")</td>
                <td valign="top">Returns a if the output mode is in tex otherwise
                     returns b</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">var_in_tex(a)</td>
                <td valign="top">&amp;var_in_tex($a)</td>
                <td valign="top">Equivalent to tex("a","")</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">to_string(x), to_string(x,y)</td>
                <td valign="top">&amp;to_string($x), &amp;to_string($x,$y)</td>
                <td valign="top">If x is an integer, returns a string. If x is real
                   than the output is a string with format given by y. For example, if x =
                   12.3456, &amp;to_string(x,".3F") = 12.345 and &amp;to_string(x,".3E") =
                   1.234E+01.</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">capa_id(), class(), section(), set(), problem()</td>
                <td valign="top">&amp;class(), &amp;section()</td>
                <td valign="top">Returns null string, class descriptive name, section
                       number, set number and null string.</td>
                <td valign="top">capa_id(), set() and problem() are no longer used.
                       Currently, they return a null value.</td>
       </tr>
   
       <tr>
                <td valign="top">name(), student_number()</td>
                <td valign="top">&amp;name(), &amp;student_number()</td>
                <td valign="top">Return the full name in the following format: lastname,
                       firstname initial. Student_number returns the student 9-alphanumeric string.
                       If undefined, the functions return null.</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">open_date(), due_date(), answer_date()</td>
                <td valign="top">&amp;open_date(), &amp;due_date(), &amp;answer_date()</td>
                <td valign="top">Problem open date, due date and answer date. The
                       time is also included in 24-hr format.</td>
                <td valign="top">Output format for time is changed slightly. If pass
                       noon, it displays ..pm else it displays ..am. So 23:59 is displayed as
                       11:59 pm.</td>
       </tr>
   
       <tr>
                <td valign="top">get_seed(), set_seed()</td>
                <td valign="top">Not implemented</td>
                <td valign="top">Get and set the random seed.</td>
                <td valign="top">&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">sub_string(a,b,c)</td>
                <td valign="top">&amp;sub_string($a,$b,$c) <br>perl&nbsp; substr function. 
                    However, note the differences</td>
                <td valign="top">Retrieve a portion of string a starting from b and
                       length c. For example,&nbsp; $a = "Welcome to LON-CAPA"; 
                       $result=&amp;sub_string($a,4,4); then $result is "come"</td>
                <td valign="top">Perl intrinsic function, substr(string,b,c) starts
                       counting from 0 (as opposed to 1). In the example to the left, substr($a,4,4)
                       returns "ome ".</td>
       </tr>
   
       <tr>
                <td valign="top">array[xx]</td>
                <td valign="top">@arrayname <br>Array is intrinsic in perl. 
                    To access a specific element use $arrayname[$n] where $n 
                    is the $n+1 element since the array count starts from 0</td>
                <td valign="top">"xx" can be a variable or a calculation.</td>
                <td valign="top">In LON-CAPA, an array is defined by @arrayname.
                     It is not necessary to specify the dimension of the array.&nbsp;</td>
       </tr>
   
       <tr>
                <td valign="top">array_moments(B,A)</td>
                <td valign="top">@B=&amp;array_moments(@A)</td>
                <td valign="top">Evaluates the moments of an array A and place the
                     result in array B[i] where i = 0 to 4. The contents of B are as follows:
                     B[0] = number of elements, B[1] = mean, B[2] = variance, B[3] = skewness
                     and B[4] = kurtosis.</td>
                <td valign="top">In CAPA, the moments are passed as an array in the first argument whereas
                     in LON-CAPA, the array containing the moments are set equal to the function.</td>
       </tr>
   
       <tr>
                <td valign="top">array_max(Name), array_min(Name)</td>
                <td valign="top">&amp;min(@Name), &amp;max(@Name)</td>
                <td valign="top">In LON-CAPA to find the maximum value of an array, use
                      &amp;max(@arrayname)&nbsp; and to find the minimum value of an array, use
                      &amp;min(@arrayname)</td>
                <td valign="top">Combined with the min and max functions defined
                   earlier.</td>
       </tr>
   
       <tr>
                <td valign="top">init_array(Name)</td>
                <td valign="top">undef @name</td>
                <td valign="top">To destroy the contents of an array, use</td>
                <td valign="top">Use perl intrinsic undef function.</td>
       </tr>
        <tr>
                <td valign="top">random_normal (return_array,item_cnt,seed,av,std_dev)</td>
                <td valign="top">@return_array=&random_normal ($item_cnt,$seed,$av,$std_dev)</td>
                <td valign="top">Generate $item_cnt deviates of normal distribution of average $av and
                           standard deviation $std_dev. The distribution is generated from seed $seed</td>
                <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 
                           the results are set equal to the function.</td>
       </tr>
        <tr>
                <td valign="top">random_beta (return_array,item_cnt,seed,aa,bb)</td>
                <td valign="top">@return_array=&random_beta ($item_cnt,$seed,$aa,$bb) <br>
                           NOTE: Both $aa and $bb MUST be greater than 1.0E-37.</td>
                <td valign="top">Generate $item_cnt deviates of beta distribution. 
                           The density of beta is:
                           X^($aa-1) *(1-X)^($bb-1) /B($aa,$bb) for 0&lt;X&lt;1.</td>
                <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 
                           the results are set equal to the function.</td>
       </tr>
        <tr>
                <td valign="top">random_gamma (return_array,item_cnt,seed,a,r)</td>
                <td valign="top">@return_array=&random_gamma ($item_cnt,$seed,$a,$r) <br>
                           NOTE: Both $a and $r MUST be positive.</td>
                <td valign="top">Generate $item_cnt deviates of gamma distribution. 
                           The density of gamma is:
                           ($a**$r)/gamma($r) * X**($r-1) * exp(-$a*X).</td>
                <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 
                           the results are set equal to the function.</td>
       </tr>
        <tr>
                <td valign="top">random_exponential (return_array,item_cnt,seed,av)</td>
                <td valign="top">@return_array=&random_exponential ($item_cnt,$seed,$av) <br>
                           NOTE: $av MUST be non-negative.</td>
                <td valign="top">Generate $item_cnt deviates of exponential distribution. </td>
                <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 
                           the results are set equal to the function.</td>
       </tr>
        <tr>
                <td valign="top">random_poisson (return_array,item_cnt,seed,mu)</td>
                <td valign="top">@return_array=&random_poisson ($item_cnt,$seed,$mu) <br>
                           NOTE: $mu MUST be non-negative.</td>
                <td valign="top">Generate $item_cnt deviates of poisson distribution. </td>
                <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 
                           the results are set equal to the function.</td>
       </tr>
        <tr>
                <td valign="top">random_chi (return_array,item_cnt,seed,df)</td>
                <td valign="top">@return_array=&random_chi ($item_cnt,$seed,$df) <br>
                           NOTE: $df MUST be positive.</td>
                <td valign="top">Generate $item_cnt deviates of chi_square distribution with $df 
                           degrees of freedom. </td>
                <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 
                           the results are set equal to the function.</td>
       </tr>
        <tr>
                <td valign="top">random_noncentral_chi (return_array,item_cnt,seed,df,nonc)</td>
                <td valign="top">@return_array=&random_noncentral_chi ($item_cnt,$seed,$df,$nonc) <br>
                           NOTE: $df MUST be at least 1 and $nonc MUST be non-negative.</td>
                <td valign="top">Generate $item_cnt deviates of noncentral_chi_square 
                           distribution with $df 
                           degrees of freedom and noncentrality parameter $nonc. </td>
                <td valign="top">In CAPA the results are passed as the first argument whereas in LON-CAPA 
                           the results are set equal to the function.</td>
       </tr>
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_f ($item_cnt,$seed,$dfn,$dfd) <br>
                           NOTE: Both $dfn and $dfd MUST be positive.</td>
                <td valign="top">Generate $item_cnt deviates of F (variance ratio) distribution with  
                           degrees of freedom $dfn (numerator) and $dfd (denominator). </td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_noncentral_f ($item_cnt,$seed,$dfn,$dfd,$nonc) <br>
                           NOTE: $dfn must be at least 1, $dfd MUST be positive, and $nonc must
                           be non-negative.</td>
                <td valign="top">Generate $item_cnt deviates of noncentral F (variance ratio) 
                           distribution with degrees of freedom $dfn (numerator) and $dfd (denominator).
                           $nonc is the noncentrality parameter. </td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
        <tr>
                <td valign="top">NOT DOCUMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_multivariate_normal ($item_cnt,$seed,\@mean,\@covar) <br>
                           NOTE: @mean should be of length p array of real numbers. @covar should be a length
                           p array of references to length p arrays of real numbers (i.e. a p by p matrix.</td>
                <td valign="top">Generate $item_cnt deviates of multivariate_normal distribution with  
                           mean vector @mean and variance-covariance matrix. </td>
                <td valign="top">Note the backslash before the @mean and @covar arrays.</td>
       </tr>
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_multinomial ($item_cnt,$seed,@p) <br>
                           NOTE: $item_cnt is rounded with int() and the result must be non-negative. 
                           The number of elements in @p must be at least 2.</td>
                <td valign="top">Returns single observation from multinomial distribution with  
                           $item_cnt events classified into as many categories as the length of @p.
                           The probability of an event being classified into category i is given by 
                           ith element of @p. The observation is an array with length equal to @p, so
                           when called in a scalar context it returns the length of @p. The sum of the
                           elements of the obervation is equal to $item_cnt.</td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_permutation ($item_cnt,@array) </td>
                <td valign="top">Returns @array randomly permuted.</td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_uniform ($item_cnt,$seed,$low,$high) <br>
                           NOTE: $low must be less than or equal to $high.</td>
                <td valign="top">Generate $item_cnt deviates from a uniform distribution. </td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_uniform_integer ($item_cnt,$seed,$low,$high) <br>
                           NOTE: $low and $high are both passed through int().
                                 $low must be less than or equal to $high.</td>
                <td valign="top">Generate $item_cnt deviates from a uniform distribution in integers. </td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_binomial ($item_cnt,$seed,$nt,$p) <br>
                           NOTE: $nt is rounded using int() and the result must be non-negative. 
                                 $p must be between 0 and 1 inclusive.</td>
                <td valign="top">Generate $item_cnt deviates from the binomial distribution with
                           $nt trials and the probabilty of an event in each trial is $p. </td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
        <tr>
                <td valign="top">NOT IMPLEMENTED IN CAPA</td>
                <td valign="top">@return_array=&random_negative_binomial ($item_cnt,$seed,$ne,$p) <br>
                           NOTE: $ne is rounded using int() and the result must be positive. 
                                 $p must be between 0 and 1 exclusive.</td>
                <td valign="top">Generate an array of $item_cnt outcomes generated from 
                           negative binomial distribution with
                           $ne events and the probabilty of an event in each trial is $p. </td>
                <td valign="top">New to LON-CAPA</td>
       </tr>
    </table>
   <!-- insertion ends -->
   
     <h2>&lt;script&gt; Variables</h2>      <h2>&lt;script&gt; Variables</h2>
     <ul>      <ul>
       <li>        <li>
Line 301 Line 885
       </li>        </li>
       <li>        <li>
  $external::part - set to the <i>id</i> of the current problem   $external::part - set to the <i>id</i> of the current problem
  &lt;part&gt;; zero if there are now &lt;part&gt;   &lt;part&gt;; zero if there are no &lt;part&gt;
       </li>        </li>
       <li>        <li>
  $external::gradestatus - set to the value of the current   $external::gradestatus - set to the value of the current
Line 309 Line 893
       </li>        </li>
       <li>        <li>
  $external::datestatus - set to the current status of the clock   $external::datestatus - set to the current status of the clock
  either CLOSED, CAN_ANSWER, CANNOT_ANSWER, or SHOW_ANSWER   either CLOSED, CAN_ANSWER, CANNOT_ANSWER, SHOW_ANSWER, or UNCHECKEDOUT
       </li>        </li>
       <li>        <li>
  $external::randomseed - set to the number that was used to   $external::randomseed - set to the number that was used to
  seed the random number generator   seed the random number generator
       </li>        </li>
       <li>$pi - set to PI </li>        <li>$pi - set to PI </li>
         <li>$rad2deg - converts radians to degrees </li>
         <li>$deg2rad - converts degrees to radians </li>
       </ul>
   
       <h2> Form internals </h2>
       <p> Form elements used for homework editing/response </p>
       <p> the form is named lonhomework </p>
       <h3> Viewing a problem (either CSTR or RES space)</h3>
       <ul>
         <li>
    grade_target, grade_username, grade_domain, grade_symb - the
    vaules take precedence over the the normal ENV settings of
    these, use &Apache::lonxml::whichuser() to get back the
    correct vaues of the items
         </li>
         <li>
    HWVAL_response:number - the name of the input elements for each response. The response is the response's ID, and the :number part exists only for response with multiple foils, and is a unique number in order of the submission
         </li>
         <li>
    changerandseed - the 'Change' button, only exists right after
    the Change button is clicked
         </li>
         <li>
    problemmode - in CSTR, it is either 'View','Edit','EditXML' or
    'Analyze' depending on the desired view
         </li>
         <li>
    rndseed - the currently requested random seed
         </li>
         <li>
    showallfoils - if it exists, and we are in CSTR space, the
    problem should ignore &lt;conceptgroup&gt; and the response's
    max setting and show all possible foils
         </li>
         <li>
    submit - the name of the Submit button
         </li>
         <li>
    submitted - a hidden form parameter that can be used to tell
    if the student has submitted answers or not, if it is set,
    there should be answers to grade.
         </li>
       </ul>
       <h3> Editing a problem (Edit mode)</h3>
       <p> tagdepth referes to the current value of the xmlparsers tagdepth couter ($Apache::lonxml::currentdepth)</p>
   <p> Note: the file edit.pm has many helper functions for creating the standard elements for editing a tag and it's attributes, all of those functions follow these conventions </p>
       <ul>
         <li>
    tagdepth_argname - I.E. 1_3.max, a parameter editing value,
    max is the name of the parameter and it is for the third tag
    inside the first tag
         </li>
         <li>
    delete_tagdepth - if set to yes, delete tag tagdepth and all
    tags inside of it
         </li>
         <li>
    homework_edit_tagdepth - used by both &Apache::edit::editline
    and &Apache::edit::editfield for the &lt;textarea&gt; and
    &lt;input&gt; form elements they create
         </li>
         <li>
    insert_tagdepth - used to request an tag insert, it is set to
    the id number of the requested tag in the
    %Apache::lonxml::insertlist
     </ul>      </ul>
       
     <hr>      <hr>
     <address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address>      <address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address>
 <!-- Created: Thu May 17 15:05:35 EDT 2001 -->  <!-- Created: Thu May 17 15:05:35 EDT 2001 -->
 <!-- hhmts start -->  <!-- hhmts start -->
 Last modified: Fri May 18 18:12:27 EDT 2001  Last modified: Fri May  3 14:24:52 EDT 2002
 <!-- hhmts end -->  <!-- hhmts end -->
   </body>    </body>
 </html>  </html>
  <ul>  
   <li>  
     <b>&lt;&gt;</b>  
   </li>  
  </ul>  
   

Removed from v.1.1  
changed lines
  Added in v.1.14


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>