Diff for /loncom/homework/response.pm between versions 1.98 and 1.99

version 1.98, 2004/05/07 17:20:19 version 1.99, 2004/05/27 04:25:13
Line 84  sub end_hintresponse { Line 84  sub end_hintresponse {
     return '';      return '';
 }  }
   
 # used by response to set the non-safe space random number generator to something  my @randomseeds;
 # that is stable and unique based on the part number and response number  sub pushrandomnumber {
       my $rand_alg=&Apache::lonnet::get_rand_alg();
       if (!$rand_alg || $rand_alg eq '32bit' || $rand_alg eq '64bit' ||
    $rand_alg eq '64bit2') {
    # do nothing
       } else {
    my @seed=&Math::Random::random_get_seed();
    push (@randomseeds,\@seed);
       }
       &Apache::response::setrandomnumber();
   }
   sub poprandomnumber {
       my $rand_alg=&Apache::lonnet::get_rand_alg();
       if (!$rand_alg || $rand_alg eq '32bit' || $rand_alg eq '64bit' ||
    $rand_alg eq '64bit2') {
    return;
       }
       my $seed=pop(@randomseeds);
       if ($seed) {
    &Math::Random::random_set_seed(@$seed);
       } else {
    &Apache::lonxml::error("Unable to restore random algorithm.");
       }
   }
 sub setrandomnumber {  sub setrandomnumber {
     my $rndseed;      my $rndseed;
     $rndseed=&Apache::structuretags::setup_rndseed();      $rndseed=&Apache::structuretags::setup_rndseed();
     if (!defined($rndseed)) { $rndseed=&Apache::lonnet::rndseed(); }      if (!defined($rndseed)) { $rndseed=&Apache::lonnet::rndseed(); }
     &Apache::lonxml::debug("randseed $rndseed");      &Apache::lonxml::debug("randseed $rndseed");
     #  $rndseed=unpack("%32i",$rndseed);      #  $rndseed=unpack("%32i",$rndseed);
     my $rndmod=(&Apache::lonnet::numval($Apache::inputtags::part) << 10);      my $rand_alg=&Apache::lonnet::get_rand_alg();
     if (defined($Apache::inputtags::response['-1'])) {      my $rndmod;
  $rndmod+=&Apache::lonnet::numval($Apache::inputtags::response[-1]);      if (!$rand_alg || $rand_alg eq '32bit' || $rand_alg eq '64bit' ||
     }   $rand_alg eq '64bit2') {
     if ($rndseed =~/,/) {   $rndmod=(&Apache::lonnet::numval($Apache::inputtags::part) << 10);
  {   if (defined($Apache::inputtags::response[-1])) {
     use integer;      $rndmod+=&Apache::lonnet::numval($Apache::inputtags::response[-1]);
     my ($num1,$num2)=split(/,/,$rndseed);  
     $num1+=$rndmod;  
     $num2+=$rndmod;  
     $rndseed="$num1,$num2";  
  }   }
     } else {      } else {
    $rndmod=(&Apache::lonnet::numval2($Apache::inputtags::part) << 10);
    if (defined($Apache::inputtags::response[-1])) {
       $rndmod+=&Apache::lonnet::numval2($Apache::inputtags::response[-1]);
    }
       }
       if ($rndseed =~/([,:])/) {
    my $char=$1;
    use integer;
    my ($num1,$num2)=split(/\Q$char\E/,$rndseed);
    $num1+=$rndmod;
    $num2+=$rndmod;
    $rndseed=$num1.$char.$num2;
       } else {
  $rndseed+=$rndmod;   $rndseed+=$rndmod;
     }      }
     &Apache::lonnet::setup_random_from_rndseed($rndseed);      &Apache::lonnet::setup_random_from_rndseed($rndseed);

Removed from v.1.98  
changed lines
  Added in v.1.99


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