F# bigint类型范围随机数

F# bigint类型范围随机数 https://zhufn.fun/archives/F# bigint类型范围随机数/

let rnd x y =
    let r = Random()
    let mutable res = 0I
    let mutable first = true

    while not first && not (res >= x && res <= y) do
        first <- false
        let length = BigInteger.Log(y, 2) |> Math.Ceiling
        let numBytes = length / 8.0 |> Math.Ceiling |> Convert.ToInt32
        let data: byte[] = Array.zeroCreate numBytes
        r.NextBytes(data)
        res <- new BigInteger(data)

    res
posted @ 2022-12-29 16:33  ZhuFN  阅读(19)  评论(0编辑  收藏  举报