Преглед на файлове

Fixed random() returning only 0

Yentl Van Tendeloo преди 9 години
родител
ревизия
c742c7ccc1
променени са 2 файла, в които са добавени 4 реда и са изтрити 4 реда
  1. 3 3
      bootstrap/random.alc
  2. 1 1
      kernel/modelverse_kernel/primitives.py

+ 3 - 3
bootstrap/random.alc

@@ -17,14 +17,14 @@ Float function random():
 	seed = integer_modulo(a * seed + c, m)
 
 	// The seed is the new value
-	log("Return random " + cast_f2s(seed))
-	return seed / m
+	log("Return random " + cast_f2s(float_division(seed, m)))
+	return float_division(seed, m)
 
 Integer function random_interval(a : Integer, b : Integer):
 	if (a == b):
 		return a
 	else:
-		return cast_f2i(random() * (b - a) + a)
+		return cast_f2i(random() * (b - a + 1) + a)
 
 Element function random_choice(list : Element):
 	if (list_len(list) == 0):

+ 1 - 1
kernel/modelverse_kernel/primitives.py

@@ -70,7 +70,7 @@ def float_multiplication(a, b, **remainder):
 
 def float_division(a, b, **remainder):
     a_value, b_value =  yield [("RV", [a]), ("RV", [b])]
-    result, = yield [("CNV", [a_value / b_value])]
+    result, = yield [("CNV", [float(a_value) / float(b_value)])]
     raise PrimitiveFinished(result)
 
 def float_gt(a, b, **remainder):