我试图在 Racket 中生成一个非常大的随机数,介于 0 和 1e20 之间。
(random)
限制设置在 1 到 4294967087 的范围内。
我创建了一个尝试生成随机数的 hack-y 函数,但仅基于数量级而不是实际数字。这是那个函数:
define (l-random [min 0] [max 10])
(define length (random (number-length min) (number-length max)))
(define string "")
(for ([i length])
(set! string (format "~a~a" string (random 0 10))))
(string->number string))
这是我计算数量级的方法:
(define (number-length number)
(cond [(= 0 number) 1]
[else (+ 1 (exact-floor (log (abs number) 10)))]))
您有什么建议或解决方案吗?谢谢!
Science Collection 中的随机数生成模块正是您所需要的。以下是 DrRacket repl 的示例(根据您的规范最多 1e20):
Welcome to DrRacket, version 6.3 [3m].
Language: racket; memory limit: 256 MB.
> (require (planet williams/science/random-source))
> (random-integer (expt 10 20))
79219429305569404064
在一秒钟内运行!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句