随机数生成F#
Random number generation F#
我有以下代码:
let rand = System.Random()
let gold = [ for i in years do yield rand.NextDouble()]
但是我不能将它折叠成一行,因为
let gold = [ for i in years do yield System.Random.NextDouble()]
为什么?
您的两个代码示例不等价。第一个创建一个对象,然后在该对象上重复调用 NextDouble()
。第二个似乎在 Random
class 上调用 static
方法,但如果它能编译我会感到惊讶,因为 NextDouble()
实际上并未声明为 static
.
如果需要,您可以通过多种方式组合创建 Random
实例及其用法:
let gold =
let rand = Random()
[for i in 1..10 do yield rand.NextDouble()]
或
let gold = let rand = Random() in [for i in 1..10 do yield rand.NextDouble()]
计算机生成的大多数 运行dom 数字,例如您的代码,都不是真正意义上的 运行dom。它们是由算法生成的,并且给定算法和种子(就像算法的起点)是确定性的。
本质上,当你想要一系列 运行dom 数字时,你 select 一个种子和一个算法,然后该算法开始为你生成 运行dom 数字种子作为起点并从那里迭代他的算法。
在过去,人们会生产 "random numbers" 的书籍。这些书使用种子和算法提前生成 运行dom 系列数字。如果你想要一个 运行dom 号码,那么你会 select 书中的一个。
计算机的工作原理类似。当你打电话给
Let rand = System.Random()
您正在初始化 运行dom 号码生成器。这就像您正在创作一本充满 运行dom 数字的书。然后从系列中迭代地绘制 运行dom 数字,你做
rand.NextDouble()
这就像从系列(书籍)中挑选第一个数字。再次调用它,然后从系列中选择第二个数字,依此类推。
让您初始化 运行dom 号码生成器的 F#/.NET 有什么意义?好吧,如果您希望每次 运行 代码时 运行dom 系列都包含相同数字的可重复结果怎么办?好吧,这样做可以让你设置种子,这样你就可以保证运行每次都有相同的"book of random numbers":
let rand = System.Random(1)
或者,如果您想要不同系列的 运行dom 号码怎么办?
let rand1 = System.Random(1)
let rand2 = System.Random(2)
我有以下代码:
let rand = System.Random()
let gold = [ for i in years do yield rand.NextDouble()]
但是我不能将它折叠成一行,因为
let gold = [ for i in years do yield System.Random.NextDouble()]
为什么?
您的两个代码示例不等价。第一个创建一个对象,然后在该对象上重复调用 NextDouble()
。第二个似乎在 Random
class 上调用 static
方法,但如果它能编译我会感到惊讶,因为 NextDouble()
实际上并未声明为 static
.
如果需要,您可以通过多种方式组合创建 Random
实例及其用法:
let gold =
let rand = Random()
[for i in 1..10 do yield rand.NextDouble()]
或
let gold = let rand = Random() in [for i in 1..10 do yield rand.NextDouble()]
计算机生成的大多数 运行dom 数字,例如您的代码,都不是真正意义上的 运行dom。它们是由算法生成的,并且给定算法和种子(就像算法的起点)是确定性的。
本质上,当你想要一系列 运行dom 数字时,你 select 一个种子和一个算法,然后该算法开始为你生成 运行dom 数字种子作为起点并从那里迭代他的算法。
在过去,人们会生产 "random numbers" 的书籍。这些书使用种子和算法提前生成 运行dom 系列数字。如果你想要一个 运行dom 号码,那么你会 select 书中的一个。
计算机的工作原理类似。当你打电话给
Let rand = System.Random()
您正在初始化 运行dom 号码生成器。这就像您正在创作一本充满 运行dom 数字的书。然后从系列中迭代地绘制 运行dom 数字,你做
rand.NextDouble()
这就像从系列(书籍)中挑选第一个数字。再次调用它,然后从系列中选择第二个数字,依此类推。
让您初始化 运行dom 号码生成器的 F#/.NET 有什么意义?好吧,如果您希望每次 运行 代码时 运行dom 系列都包含相同数字的可重复结果怎么办?好吧,这样做可以让你设置种子,这样你就可以保证运行每次都有相同的"book of random numbers":
let rand = System.Random(1)
或者,如果您想要不同系列的 运行dom 号码怎么办?
let rand1 = System.Random(1)
let rand2 = System.Random(2)