File tree Expand file tree Collapse file tree
1-js/12-generators-iterators/1-generators
01-pseudo-random-generator Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -16,7 +16,7 @@ alert(generator.next().value); // 282475249
1616alert (generator .next ().value ); // 1622650073
1717```
1818
19- 请注意,上面的代码也可以用普通函数来实现 ,就像这样:
19+ 请注意,也可以使用常规函数来完成相同的操作 ,就像这样:
2020
2121``` js run
2222function pseudoRandom (seed ) {
@@ -35,4 +35,4 @@ alert(generator()); // 282475249
3535alert (generator ()); // 1622650073
3636```
3737
38- 这也能正常工作。但是这样我们就不能用 ` for..of ` 来迭代,也不能用 generator 组合了,这样的形式可能在其他地方很有用 。
38+ 这也可以工作。但是这样我们就失去了使用 ` for..of ` 来进行迭代以及使用 generator 组合(composition)的能力,这些可能在其他地方很有用 。
Original file line number Diff line number Diff line change 11
2- # 伪随机(Pseudo-random) generator
2+ # 伪随机 generator
33
4- 在许多场合下我们都需要随机数据 。
4+ 在很多地方我们都需要随机数据 。
55
6- 其中之一就是用于测试 。我们可能需要随机数据:文本,数字等以便很好的测试 。
6+ 其中之一就是测试 。我们可能需要随机数据:文本,数字等,以便很好地进行测试 。
77
8- 在 JavaScript 中,我们可以使用 ` Math.random() ` 。但是如果出现问题,我们希望能使用完全相同的数据再重复进行测试 。
8+ 在 JavaScript 中,我们可以使用 ` Math.random() ` 。但是如果什么地方出现了问题,我们希望能使用完全相同的数据进行重复测试 。
99
10- 为此,我们使用所谓的 “种子伪随机(seeded pseudo-random)generators”。它们采用 “种子”,即第一个值, 然后使用公式生成下一个值。因此相同的种子 yield 相同的序列,整个数据流很容易复现 。我们只需要记住种子并重复它即可。
10+ 为此,我们可以使用所谓的 “种子伪随机(seeded pseudo-random)generator”。它们将 “种子(seed)”作为第一个值, 然后使用公式生成下一个值。以便相同的种子(seed)可以产生( yield) 相同的序列,因此整个数据流很容易复现 。我们只需要记住种子并重复它即可。
1111
12- 一个公式示例如下,它生成一些统一分布的值 :
12+ 这样的公式的一个示例如下,它可以生成一些均匀分布的值 :
1313
1414```
1515next = previous * 16807 % 2147483647
1616```
1717
18- 如果我们使用 ` 1 ` 作为种子,它的值将会是 :
18+ 如果我们使用 ` 1 ` 作为种子,生成的值将会是 :
19191 . ` 16807 `
20202 . ` 282475249 `
21213 . ` 1622650073 `
22- 4 . ……等等 ……
22+ 4 . ……等 ……
2323
24- 那么, 这里的任务是创建一个 generator 函数 ` pseudoRandom(seed) ` ,它将 ` seed ` 作为参数然后以这个公式创建 generator。
24+ 这里的任务是创建一个 generator 函数 ` pseudoRandom(seed) ` ,它将 ` seed ` 作为参数并使用此公式创建 generator。
2525
2626使用范例:
2727
You can’t perform that action at this time.
0 commit comments