在球拍中创建一个大随机数

时间:2018-11-28 22:40:51

标签: random 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)))]))

您有什么建议或解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:0)

“科学收藏”中的Random Number Generation module正是您所需要的。这是DrRacket副本的示例(每个规范最多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

哪一秒能跑完!