version 1.118, 2005/04/04 10:04:09
|
version 1.119, 2005/04/04 18:14:58
|
Line 119 sub setrandomnumber {
|
Line 119 sub setrandomnumber {
|
# $rndseed=unpack("%32i",$rndseed); |
# $rndseed=unpack("%32i",$rndseed); |
my $rand_alg=&Apache::lonnet::get_rand_alg(); |
my $rand_alg=&Apache::lonnet::get_rand_alg(); |
my $rndmod; |
my $rndmod; |
if (!$rand_alg || $rand_alg eq '32bit' || $rand_alg eq '64bit' || |
|
$rand_alg eq '64bit2') { |
my ($id1,$id2,$shift_amt); |
$rndmod=(&Apache::lonnet::numval($Apache::inputtags::part) << 10); |
if ($Apache::lonhomework::parsing_a_problem) { |
|
$id1=$Apache::inputtags::part; |
if (defined($Apache::inputtags::response[-1])) { |
if (defined($Apache::inputtags::response[-1])) { |
$rndmod+=&Apache::lonnet::numval($Apache::inputtags::response[-1]); |
$id2=$Apache::inputtags::response[-1]; |
} |
} |
} elsif ($rand_alg eq '64bit3') { |
$shift_amt=scalar(@Apache::inputtags::responselist); |
$rndmod=(&Apache::lonnet::numval2($Apache::inputtags::part) << 10); |
} elsif ($Apache::lonhomework::parsing_a_task) { |
if (defined($Apache::inputtags::response[-1])) { |
$id1=$Apache::bridgetask::dimension; |
$rndmod+=&Apache::lonnet::numval2($Apache::inputtags::response[-1]); |
if (defined($Apache::bridgetask::instance[-1])) { |
|
$id2=$Apache::bridgetask::instance[-1]; |
} |
} |
|
$shift_amt=scalar(@Apache::bridgetask::instance); |
|
} |
|
&Apache::lonxml::debug("id1: $id1, id2: $id2, shift_amt: $shift_amt"); |
|
if (!$rand_alg || $rand_alg eq '32bit' || $rand_alg eq '64bit' || |
|
$rand_alg eq '64bit2') { |
|
$rndmod=(&Apache::lonnet::numval($id1) << 10); |
|
if (defined($id2)) { $rndmod+=&Apache::lonnet::numval($id2); } |
|
} elsif ($rand_alg eq '64bit3') { |
|
$rndmod=(&Apache::lonnet::numval2($id1) << 10); |
|
if (defined($id2)) { $rndmod+=&Apache::lonnet::numval2($id2); } |
} else { |
} else { |
my $shift=(4*scalar(@Apache::inputtags::responselist))%30; |
my $shift=(4*$shift_amt)%30; |
$rndmod=(&Apache::lonnet::numval3($Apache::inputtags::part) << (($shift+15)%30)); |
$rndmod=(&Apache::lonnet::numval3($id1) << (($shift+15)%30)); |
if (defined($Apache::inputtags::response[-1])) { |
if (defined($id2)) { |
$rndmod+=(&Apache::lonnet::numval3($Apache::inputtags::response[-1]) << $shift ); |
$rndmod+=(&Apache::lonnet::numval3($id2) << $shift ); |
} |
} |
} |
} |
if ($rndseed =~/([,:])/) { |
if ($rndseed =~/([,:])/) { |