--- loncom/homework/response.pm 2005/09/23 16:47:06 1.125 +++ loncom/homework/response.pm 2005/11/01 21:33:49 1.126 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.125 2005/09/23 16:47:06 albertel Exp $ +# $Id: response.pm,v 1.126 2005/11/01 21:33:49 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -119,7 +119,7 @@ sub setrandomnumber { &Apache::lonxml::debug("randseed $rndseed"); # $rndseed=unpack("%32i",$rndseed); my $rand_alg=&Apache::lonnet::get_rand_alg(); - my $rndmod; + my ($rndmod,$rndmod2); my ($id1,$id2,$shift_amt); if ($Apache::lonhomework::parsing_a_problem) { @@ -133,6 +133,7 @@ sub setrandomnumber { if (defined($Apache::bridgetask::instance[-1])) { $id2=$Apache::bridgetask::instance[-1]; } + Apache->request->print("

$id1 $id2

"); $shift_amt=scalar(@Apache::bridgetask::instance); } &Apache::lonxml::debug("id1: $id1, id2: $id2, shift_amt: $shift_amt"); @@ -143,19 +144,22 @@ sub setrandomnumber { } elsif ($rand_alg eq '64bit3') { $rndmod=(&Apache::lonnet::numval2($id1) << 10); if (defined($id2)) { $rndmod+=&Apache::lonnet::numval2($id2); } - } else { + } elsif ($rand_alg eq '64bit4') { my $shift=(4*$shift_amt)%30; $rndmod=(&Apache::lonnet::numval3($id1) << (($shift+15)%30)); if (defined($id2)) { $rndmod+=(&Apache::lonnet::numval3($id2) << $shift ); } + } else { + ($rndmod,$rndmod2)=&Apache::lonnet::digest("$id1,$id2"); + } if ($rndseed =~/([,:])/) { my $char=$1; use integer; my ($num1,$num2)=split(/\Q$char\E/,$rndseed); $num1+=$rndmod; - $num2+=$rndmod; + $num2+= ((defined($rndmod2)) ? $rndmod2 : $rndmod); if($Apache::lonnet::_64bit) { $num1=(($num1<<32)>>32); $num2=(($num2<<32)>>32); } $rndseed=$num1.$char.$num2; } else {