【问题标题】:Scheme: creating a random range [closed]方案:创建一个随机范围 [关闭]
【发布时间】:2012-09-08 22:11:00
【问题描述】:

在方案中,我必须使用 random 来定义一个不接受任何参数并返回 1 到 10 范围内的整数的过程,包括 1 到 10,我不能使用 if。我迷路了=(

【问题讨论】:

  • 你的 Scheme 是否提供了random 函数?
  • 是的,我的方案提供了一个随机函数
  • (+ 1 (random 10)) 如果你不能自己解决这个问题,你应该改变你的课程。编程不适合你。

标签: random integer scheme range


【解决方案1】:

如果你的 Scheme 提供了一个random 函数,你想要一个

(define (1-10-rand)
    (+ 1 (random 10)))

(define (1-10-rand)
    (floor (* 10 (random))))

取决于您是否拥有(random n) --> integer in [0, n-1])(random) -> float in [0,1]

请注意,这不符合标准。对于绝对可移植性,编写你自己的RNG。

【讨论】:

  • 我试过了,但出现语法错误。如果我必须定义过程 throw-die 并且它随机返回一个整数 1 到 6,什么是 lambda?我可以使用 (+ 1 (random 10)) 作为身体吗?
  • throw-die(define (throw-die) (+ 1 (random 6)))
  • 实际上,在 REPL 中调用 (random) 有什么作用? (random 5)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多