对有界随机数的穷举“匹配”

时间:2012-09-28 07:28:25

标签: f#

open System

let random_number_generator = System.Random(int System.DateTime.Now.Ticks) in
let random_number_below n = random_number_generator.Next(n) in
match random_number_below 3 with
| 0 -> "Zero!"
| 1 -> "One!"
| 2 -> "Two!"
;;

根据编译器,上述匹配语句并非详尽无遗。这是完全合法的,因为F#没有可以保证随机数界限的语法信息。

Incomplete pattern matches on this expression. For example, the value '3' may indicate a case not covered by the pattern(s).

与随机数匹配的惯用F#方式(或者只是if-else')是什么?

1 个答案:

答案 0 :(得分:6)

与评论一样,解决这个问题通常需要求解halting problem。因此,最好的办法可能是

|_ -> failwith "broken RNG"