Большинство случайных чисел, генерируемых компьютерами, например, в случай вашего кода, не являются случайными в истинном смысле этого слова. Они генерируются алгоритмом и задаются алгоритм и семена (как начальная точка для алгоритма), детерминированные.
По существу, если вы хотите серию случайных чисел, вы выбираете семя и алгоритм, а затем этот алгоритм начинает генерировать случайные числа для вас, используя семя в качестве отправной точки и итерации алгоритма оттуда.
В старые времена люди будут производить книги «случайных чисел». В этих книгах использовалось семя и алгоритм для того, чтобы произвести случайную серию чисел раньше времени. Если вам нужен случайный номер, вы должны выбрать его из книги.
Компьютеры работают аналогичным образом. Когда вы позвоните
Let rand = System.Random()
Вы инициализируете генератор случайных чисел. Это похоже на то, что вы создаете книгу, полную случайных чисел. Затем итеративно рисовать случайные числа из ряда, вы
rand.NextDouble()
Это как собирание первого номера из серии (книги). Позвоните еще раз, и вы выберете второе число из серии и т. Д.
В чем смысл F # /. NET, если вы инициализируете генератор случайных чисел? Что ж, если вам нужны повторяемые результаты, когда случайная серия будет содержать одинаковые числа каждый раз, когда вы запускаете код? Ну, делать это таким образом позволяет установить семя, так что вы гарантированно иметь ту же самую «книгу случайных чисел» каждый раз:
let rand = System.Random(1)
Или, что если вы хотите различных серий случайных чисел?
let rand1 = System.Random(1)
let rand2 = System.Random(2)
Потому что вам нужно, чтобы создать случайный объект - вы можете сделать '(System.Random()) NextDouble', но вы получите тот же ответ каждый раз, когда –
@JohnPalmer вы * * вероятно получить тот же ответ. каждый раз. Он остается неизменным, если не будет использоваться грубое зерно, используемое для посева. Как правило, автоматический посев нехорошо полагаться; он не является достаточно неопределенным и детерминированным. – Vandroiy
Комбинаторы для генерации случайных структур: https://gist.github.com/eulerfx/9808911 – eulerfx