mig*_*rso 3 ruby type-conversion
我正在将一个算法从C#移植到Ruby.该算法有一种方法可以返回int有时溢出的方法.
private static int NextRandom(int n)
{
return 1234567890 * n + 12345;
}
Run Code Online (Sandbox Code Playgroud)
该算法利用溢出来避免此函数返回的值超出范围.但是,Ruby的行为不同,它会自动将值转换为Bignum,这似乎没有限制......我如何在Ruby中实现相同的目标?
如果您想要一个数字包裹在某个级别,您可能需要手动限制它:
def next_random(n)
(1234567890 * n + 12345) % 0x7FFFFFFF
end
Run Code Online (Sandbox Code Playgroud)
您可以选择所需的任何限制,该示例是32位签名.
我认为你无法将数值计算锁定到任意范围.
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |