Racket 如何过滤随机数生成器而不包含0

Racket 如何过滤随机数生成器而不包含0,racket,Racket,如何修复14294967087伪随机生成器中的random:expected or/c整数?或者一个伪随机发生器,给定0错误 主要100 随机:在14294967087伪随机生成器中需要or/c整数?或伪随机发生器,给定0 本以为它会以偶数不断地变换位置,但事情发生了 将1添加到传递给random的参数中如何?只要输入>=0,就可以正常工作-您收到的错误只是说明您不能将0作为参数传递给random: 顺便说一下,兰多尔看起来不太对劲。为什么要测试随机值是否为偶数,只是为了返回另一个随机值,我们不

如何修复14294967087伪随机生成器中的random:expected or/c整数?或者一个伪随机发生器,给定0错误

主要100 随机:在14294967087伪随机生成器中需要or/c整数?或伪随机发生器,给定0

本以为它会以偶数不断地变换位置,但事情发生了

将1添加到传递给random的参数中如何?只要输入>=0,就可以正常工作-您收到的错误只是说明您不能将0作为参数传递给random:

顺便说一下,兰多尔看起来不太对劲。为什么要测试随机值是否为偶数,只是为了返回另一个随机值,我们不知道它是否为偶数?如果随机值为零,或者在所有其他情况下,你只想返回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。这就是你想要的吗?

我正试图使一个计时功能变慢,这就是为什么我使用了偶数?作用我需要一个x坐标的随机发生器,这样我就可以把一个物体放在random@DanGal我明白了,但是你确定传递给randoll的值的范围是多少吗?看起来有一半的时间你会返回7。是的,如果它变为0,我想将图像定位在x坐标7处,这样图像就不会被裁剪。不管怎么说,有没有一个函数可以用来放置一个范围?比如random[6-94]吗?@DanGal你读过你正在使用的函数的名称吗?它就是这样做的!例如,要生成[6,94]范围内的数字,请执行以下操作:random 6 950。它说random只期望1个参数,即使我读了racket文档,你说的是真的idk为什么它不工作lol
(define (rand d)
  (random (+ d 1)))
(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