Random 为什么上限在大多数RNG中是唯一的?

Random 为什么上限在大多数RNG中是唯一的?,random,Random,大多数编程语言都提供(伪)随机数生成器,其中许多语言都有方便的方法来生成特定范围内的整数。到目前为止,在我看到的所有实现中,范围的下限是包含的,而上限是独占的 是否有具体的技术或历史原因 我可以想象,在处理索引或长度时,这很方便,但我找不到任何有价值的证据。不知道为什么,但这似乎是最有意义的。如果上限包含在内,则0到100之间可能有101个值。似乎与直觉相反。可能是因为在内部层的某个地方使用了模运算。例如,如果您有一个字节或随机数据,则范围为0…255。将其扩展到[0,1]需要除以255,这是非

大多数编程语言都提供(伪)随机数生成器,其中许多语言都有方便的方法来生成特定范围内的整数。到目前为止,在我看到的所有实现中,范围的下限是包含的,而上限是独占的

是否有具体的技术或历史原因


我可以想象,在处理索引或长度时,这很方便,但我找不到任何有价值的证据。

不知道为什么,但这似乎是最有意义的。如果上限包含在内,则0到100之间可能有101个值。似乎与直觉相反。可能是因为在内部层的某个地方使用了模运算。例如,如果您有一个字节或随机数据,则范围为0…255。将其扩展到[0,1]需要除以255,这是非常昂贵的。将其转移到[0,1][只需要除以256,这很便宜:只需从浮点表示法中的指数中减去一个固定值。请注意相关的、正在进行的线程。@JTrana感谢链接帖子:)不知道为什么,但它似乎最有意义。如果上界包含在内,则两者之间可能有101个值0和100。似乎与直觉相反。可能是因为在内部层的某个地方使用了模运算。例如,如果你有一个字节或随机数据,那么你的范围将是0…255。将其缩放到[0,1]需要除以255,这很昂贵。将其转换为[0,1][只需要除以256,这很便宜:只需从浮点表示法的指数中减去一个固定值。请注意相关的正在进行的线程。@JTrana感谢链接帖子:)