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