Diff for /rat/lonuserstate.pm between versions 1.49 and 1.50

version 1.49, 2003/02/03 18:03:53 version 1.50, 2003/02/21 23:01:48
Line 417  sub pickrandom { Line 417  sub pickrandom {
         my $mpc=$hash{'map_pc_'.$hash{'src_'.$rid}};          my $mpc=$hash{'map_pc_'.$hash{'src_'.$rid}};
 # ------------------------------------------- put existing resources into array  # ------------------------------------------- put existing resources into array
         my @currentrids=();          my @currentrids=();
         foreach (keys %hash) {          foreach (sort(keys(%hash))) {
     if ($_=~/^src_($mpc\.\d+)/) {      if ($_=~/^src_($mpc\.\d+)/) {
  if ($hash{'src_'.$1}) { push @currentrids, $1; }   if ($hash{'src_'.$1}) { push @currentrids, $1; }
             }              }
         }          }
    # rids are number.number and we want to numercially sort on 
           # the second number
    @currentrids=sort {
       my (undef,$aid)=split(/\./,$a);
       my (undef,$bid)=split(/\./,$b);
       $aid <=> $bid;
    } @currentrids;
         next if ($#currentrids<$rndpick);          next if ($#currentrids<$rndpick);
 # -------------------------------- randomly eliminate the ones that should stay  # -------------------------------- randomly eliminate the ones that should stay
  srand(&Apache::lonnet::rndseed($rid)); # use rid instead of symb   my (undef,$id)=split(/\./,$rid);
         for (my $i=1;$i<=$rndpick;$i++) {   my $rndseed=&Apache::lonnet::rndseed($id); # use id instead of symb
             while (1) {   &Math::Random::random_set_seed_from_phrase($rndseed);
  my $randomidx=int(rand($#currentrids+1));   my @whichids=&Math::Random::random_permuted_index($#currentrids+1);
                 if ($currentrids[$randomidx]) {          for (my $i=1;$i<=$rndpick;$i++) { $currentrids[$whichids[$i]]=''; }
     $currentrids[$randomidx]='';   #&Apache::lonnet::logthis("$id,$rndseed,".join(':',@whichids));
                     last;  
                 }  
             }  
         }  
 # -------------------------------------------------------- delete the leftovers  # -------------------------------------------------------- delete the leftovers
         for (my $k=0; $k<=$#currentrids; $k++) {          for (my $k=0; $k<=$#currentrids; $k++) {
             if ($currentrids[$k]) {              if ($currentrids[$k]) {

Removed from v.1.49  
changed lines
  Added in v.1.50


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