У меня есть эта функция, которая выбирает 4 цвета randoms и составляет ее список. По крайней мере я хочу это слишком .:F # System.Random в рекурсивной функции делает забавные вещи
let theList = [Red;Green;Yellow;Purple;White;Black]
let rec a x =
let rnd = System.Random()
match x with
|0 -> []
|_ -> (List.item(rnd.Next(6)) theList)::(a (x-1))
Проблема заключается в том, хотя он выбирает случайный цвет каждый раз, когда я запустить FUNKTION тогда он всегда выбирает один и тот же цвет для всего списка. [Красный, Красный, Красный, Красный] или [Зеленый, Зеленый, Зеленый, Зеленый] и т. Д.
Это тайна для меня, как она может достигать одного цвета каждый раз, когда она делает рекурсивный вызов.
Если я использую случайный метод в цикле for, то проблем нет.
Может кто-нибудь объяснить мне, что здесь происходит?
Переведите вызов 'System.Random()' из функции, и он будет работать. Я напишу длинный ответ, объясняющий, почему. – rmunn
Возможный дубликат [Получить случайные числа в F #] (http://stackoverflow.com/questions/37898225/get-random-numbers-in-f) –