gpt4 book ai didi

0 <= x < 2^64 之间的 Scalacheck 数字生成器

转载 作者:行者123 更新时间:2023-12-04 23:40:54 25 4
gpt4 key购买 nike

我正在尝试修正一个涵盖 uint64_t 的好的数字生成器在 C. 这是我到目前为止所拥有的。

def uInt64s : Gen[BigInt] = Gen.choose(0,64).map(pow2(_) - 1)

这是一个好的开始,但它只生成数字 2^n - 1 .有没有更有效的方法来生成随机 BigInts 同时保留数字范围 0 <= n < 2^64 ?

最佳答案

好吧,也许我在这里遗漏了一些东西,但这不是这么简单吗?

def uInt64s : Gen[BigInt] = Gen.chooseNum(Long.MinValue,Long.MaxValue)
.map(x => BigInt(x) + BigInt(2).pow(63))

多头已经有正确的位数 - 只需添加 2^63 所以 Long.MinValue变为 0 和 Long.MaxValue变成 2^64 - 1。并用 BigInt 做加法s 当然。

我很好奇生成值的分布。显然是 chooseNum的分布不统一,因为它更喜欢特殊值,但 Longs 的边缘情况可能对 UInt64s 也很有趣:
/** Generates numbers within the given inclusive range, with
* extra weight on zero, +/- unity, both extremities, and any special
* numbers provided. The special numbers must lie within the given range,
* otherwise they won't be included. */
def chooseNum[T](minT: T, maxT: T, specials: T*)(

关于0 <= x < 2^64 之间的 Scalacheck 数字生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898802/

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