我尝试解决这个问题
Flip-coin 无需争论,并以相等的概率随机返回符号正面或反面。
这就是我得到的,但我不明白为什么它给我“不可能”这可以阻止吗?
(define flip-coin
(lambda ( )
(cond
[ (= (random 2 ) 1 ) "heads" ]
[ (= (random 2 ) 0 ) "tails" ]
[else "impossible" ]
)
)
)
最佳答案
您有两个不同的电话给 random
在您的 cond
陈述。这两者都是独立的,可以给你不同的结果。所以有可能是第一个 (random 2)
计算结果为 0
第二个评估为 1
,使这两种情况都失败并给您 "impossible"
.
解决方案是将 (random 2)
的结果放入在带有 let 语句的局部变量中,确保只调用 random
一次。
关于random - 翻转硬币计划程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12380909/