gpt4 book ai didi

ruby - 避免在 Ruby 中从 Fixnum 自动转换为 Bignum

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:59 28 4
gpt4 key购买 nike

我正在将算法从 C# 移植到 Ruby。该算法有一个方法返回一个有时会溢出的 int

    private static int NextRandom(int n)
{
return 1234567890 * n + 12345;
}

该算法利用溢出来避免此函数返回的值超出范围。但是,Ruby 的行为不同,它会自动将值转换为似乎没有限制的 Bignum...我如何在 Ruby 中实现相同的目标?

最佳答案

如果你想让一个数字在某个级别换行,你可能需要手动限制它:

def next_random(n)
(1234567890 * n + 12345) % 0x7FFFFFFF
end

您可以选择任何您想要的限制,该示例是 32 位签名的。

我认为您无法将数值计算锁定在任意范围内。

关于ruby - 避免在 Ruby 中从 Fixnum 自动转换为 Bignum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6494514/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com