如何修复random: expects (or/c (integer-in 1 4294967087) pseudo-random-generator?) or a pseudo-random-generator, given 0错误?
(require 2htdp/universe)
(require 2htdp/image)
(define-struct sample(x))
(define BACKGROUND (empty-scene 100 100))
(define CIRCLE (ellipse 10 10 "solid" "red"))
(define (rand d)
(random d))
(define (randoll d)
(cond [(even? (rand d))(rand d)]
[(< (rand d) 6)7]
[(= (rand d) 0)7]
[else 7]))
(define (main ws)
(big-bang ws
(on-tick randoll)
(to-draw render)))
(define (render d)
(place-image CIRCLE (randoll d) 6 BACKGROUND))(主100)随机:期望(或/c(整数-in 1 4294967087)伪随机生成器?)或者伪随机生成器,给定0。 希望它能在偶数的时候不断地改变位置,但是这发生了。
发布于 2019-02-08 09:34:50
将1添加到传递给random的参数如何?只要输入是>= 0,它就能正常工作--您所收到的错误只是说明不能将0作为参数传递给random
(define (rand d)
(random (+ d 1)))顺便说一句,randoll看上去不太对。为什么你要测试随机值是否是偶数,只是为了返回另一个随机值,我们不知道它是否会是偶数?看起来,如果随机值为零,或者在所有其他情况下,您只想返回7。如果符合你的要求,最好试试这个:
(define (randoll d)
(let ([r (rand d)]) ; call `rand` exactly once
(cond [(zero? r) 7] ; 0 is even, so check this first
[(even? r) r] ; return `r` only if it's even
[else 7]))) ; default case我不确定randoll的预期值范围是什么,但在我看来,大多数情况下它只返回7。这是你想要的吗?
https://stackoverflow.com/questions/54585580
复制相似问题