Permalink
Browse files

MDL-12503 Loguniform merging from head

  • Loading branch information...
1 parent d0f3b3f commit b6630ed3dccee28ba23c1044d703d3c95f3672f8 pichetp committed Mar 10, 2008
Showing with 2 additions and 52 deletions.
  1. +2 −52 question/type/calculated/questiontype.php
@@ -672,62 +672,12 @@ function generate_dataset_item($options) {
}
if ($regs[1] == 'uniform') {
$nbr = $regs[2] + ($regs[3]-$regs[2])*mt_rand()/mt_getrandmax();
- return round($nbr, $regs[4]);
+ return sprintf("%.".$regs[4]."f",$nbr);
} else if ($regs[1] == 'loguniform') {
$log0 = log(abs($regs[2])); // It would have worked the other way to
$nbr = exp($log0 + (log(abs($regs[3])) - $log0)*mt_rand()/mt_getrandmax());
-
- // Reformat according to the precision $regs[4]:
-
- // Determine the format 0.[1-9][0-9]* for the nbr...
- $p10 = 0;
- while ($nbr < 1) {
- --$p10;
- $nbr *= 10;
- }
- while ($nbr >= 1) {
- ++$p10;
- $nbr /= 10;
- }
- // ... and have the nbr rounded off to the correct length
- $nbr = round($nbr, $regs[4]);
-
- // Have the nbr written on a suitable format,
- // Either scientific or plain numeric
- if (-2 > $p10 || 4 < $p10) {
- // Use scientific format:
- $eX = 'e'.--$p10;
- $nbr *= 10;
- if (1 == $regs[4]) {
- $nbr = $nbr.$eX;
- } else {
- // Attach additional zeros at the end of $nbr,
- $nbr .= (1==strlen($nbr) ? '.' : '')
- . '00000000000000000000000000000000000000000x';
- $nbr = substr($nbr, 0, $regs[4] +1).$eX;
- }
- } else {
- // Stick to plain numeric format
- $nbr *= "1e$p10";
- if (0.1 <= $nbr / "1e$regs[4]") {
- $nbr = $nbr;
- } else {
- // Could be an idea to add some zeros here
- $nbr .= (ereg('^[0-9]*$', $nbr) ? '.' : '')
- . '00000000000000000000000000000000000000000x';
- $oklen = $regs[4] + ($p10 < 1 ? 2-$p10 : 1);
- $nbr = substr($nbr, 0, $oklen);
- }
- }
-
- // The larger of the values decide the sign in case the
- // have equal different signs (which they really must not have)
- if ($regs[2] + $regs[3] > 0) {
- return $nbr;
- } else {
- return -$nbr;
- }
+ return sprintf("%.".$regs[4]."f",$nbr);
} else {
error("The distribution $regs[1] caused problems");

0 comments on commit b6630ed

Please sign in to comment.