--- loncom/homework/response.pm 2004/10/21 03:19:04 1.107 +++ loncom/homework/response.pm 2004/12/23 22:53:41 1.112 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # various response type definitons response definition # -# $Id: response.pm,v 1.107 2004/10/21 03:19:04 albertel Exp $ +# $Id: response.pm,v 1.112 2004/12/23 22:53:41 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -124,11 +124,17 @@ sub setrandomnumber { if (defined($Apache::inputtags::response[-1])) { $rndmod+=&Apache::lonnet::numval($Apache::inputtags::response[-1]); } - } else { + } elsif ($rand_alg eq '64bit3') { $rndmod=(&Apache::lonnet::numval2($Apache::inputtags::part) << 10); if (defined($Apache::inputtags::response[-1])) { $rndmod+=&Apache::lonnet::numval2($Apache::inputtags::response[-1]); } + } else { + my $shift=(4*scalar(@Apache::inputtags::responselist))%30; + $rndmod=(&Apache::lonnet::numval3($Apache::inputtags::part) << (($shift+15)%30)); + if (defined($Apache::inputtags::response[-1])) { + $rndmod+=(&Apache::lonnet::numval3($Apache::inputtags::response[-1]) << $shift ); + } } if ($rndseed =~/([,:])/) { my $char=$1; @@ -136,12 +142,17 @@ sub setrandomnumber { my ($num1,$num2)=split(/\Q$char\E/,$rndseed); $num1+=$rndmod; $num2+=$rndmod; + if($Apache::lonnet::_64bit) { $num1=(($num1<<32)>>32); $num2=(($num2<<32)>>32); } $rndseed=$num1.$char.$num2; } else { $rndseed+=$rndmod; + if($Apache::lonnet::_64bit) { + use integer; + $rndseed=(($rndseed<<32)>>32); + } } + &Apache::lonxml::debug("randseed $rndmod $rndseed"); &Apache::lonnet::setup_random_from_rndseed($rndseed); - &Apache::lonxml::debug("randseed $rndseed"); return ''; } @@ -508,6 +519,7 @@ sub showallfoils { return 1; } } + if ($Apache::lonhomework::type eq 'survey') { return 1; } return 0; }