Я пытаюсь сгенерировать очень большое случайное число в 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)))]))
Есть ли у вас какие-либо предложения или решения?Спасибо!