基本上我理解程序而不是这里使用的数学/数字。
import random
def r_int():
x = int(abs(10 * random.random() % 20))
return x
我发现这相当于random.randint(0,9)
。 %
和20
在这做什么?
答案 0 :(得分:4)
%
是modulo operator;它返回第一个操作数上除法运算的余数。
% 20
表示:返回第一个操作数的余数除以20;它始终是[0.0,20.0]范围内的数字(包括0,不包括20)。
这使得abs()
调用完全是多余的,因为结果总是正面的。并非模运算符也有任何一点,因为10 * random.random()
始终是[0.0,10.0]范围内的浮点数(因此低于10)。低于20.0,模数20的任何数字都是相同的数字。
他们可以使用random.randrange(10)
并避免所有这些混乱。