在F#中创建随机数时如何避免特定数字?

时间:2018-12-08 22:24:11

标签: recursion random f#

我正在尝试为每个方向生成一个从0到3的随机数-n,e,s,w。无论递归函数以前的方向是什么,都不能再次使用,我正在尝试找出实现此目标的最佳方法。我也想避免使用可变变量。下面是我到目前为止所拥有的,并且可以正常运行,但是我敢肯定有更好的方法可以做到这一点...

open System

let width = Console.WindowWidth
let height = Console.WindowHeight
let (map: int[,]) = Array2D.zeroCreate width height
let random = Random()

let main x y d =
    let mutable nd = random.Next(4)
    while nd = d do
        nd <- random.Next(4)

1 个答案:

答案 0 :(得分:3)

您只需要以下三个值之一:

let nd1 = random.Next 3
let nd = if nd1 >= d then nd1 + 1 else nd1