Skip to content

Commit

Permalink
docs(pt): translate the generators article
Browse files Browse the repository at this point in the history
Generators

Content translated by @danilolmc
  • Loading branch information
nazarepiedady authored Jan 7, 2024
2 parents 846cbb1 + 739b733 commit bb54132
Show file tree
Hide file tree
Showing 5 changed files with 130 additions and 133 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
function* pseudoRandom(seed) {
let value = seed;
function* pseudoRandom(semente) {
let valor = semente;

while(true) {
value = value * 16807 % 2147483647
yield value;
valor = valor * 16807 % 2147483647
yield valor;
}

};
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
describe("pseudoRandom", function() {

it("follows the formula", function() {
it("segue a fórmula", function() {
let generator = pseudoRandom(1);

assert.equal(generator.next().value, 16807);
Expand All @@ -9,7 +9,7 @@ describe("pseudoRandom", function() {
});


it("returns same value for the same seed", function() {
it("retorna o mesmo valor para a mesma semente", function() {
let generator1 = pseudoRandom(123);
let generator2 = pseudoRandom(123);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ alert(generator.next().value); // 282475249
alert(generator.next().value); // 1622650073
```

Please note, the same can be done with a regular function, like this:
Observe que o mesmo pode ser feito com uma função regular, assim:

```js run
function pseudoRandom(seed) {
Expand All @@ -35,4 +35,4 @@ alert(generator()); // 282475249
alert(generator()); // 1622650073
```

That also works. But then we lose ability to iterate with `for..of` and to use generator composition, that may be useful elsewhere.
Isso também funciona. No entanto, perdemos a capacidade de iterar com `for..of` e de usar a composição de geradores, o que pode ser útil em outros contextos.
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@

# Pseudo-random generator
# Gerador pseudoaleatório

There are many areas where we need random data.
Existem muitas áreas onde precisamos de dados aleatórios.

One of them is testing. We may need random data: text, numbers, etc. to test things out well.
Uma delas é em testes. Podemos precisar de dados aleatórios: texto, números, etc. para testar as coisas adequadamente.

In JavaScript, we could use `Math.random()`. But if something goes wrong, we'd like to be able to repeat the test, using exactly the same data.
Em JavaScript, poderíamos usar `Math.random()`. Mas se algo der errado, gostaríamos de poder repetir o teste, usando exatamente os mesmos dados.

For that, so called "seeded pseudo-random generators" are used. They take a "seed", the first value, and then generate the next ones using a formula so that the same seed yields the same sequence, and hence the whole flow is easily reproducible. We only need to remember the seed to repeat it.
Para isso, são usados os chamados "geradores pseudoaleatórios com semente". Eles recebem uma "semente", o primeiro valor, e em seguida gera os próximos usando a fórmula para que a mesma semente produza a mesma sequência, tornando todo o fluxo fácil de se reproduzir. Precisamos apenas lembrar da semente para repeti-lo.

An example of such formula, that generates somewhat uniformly distributed values:
Um exemplo de tal fórmula, que gera valores distribuídos de maneira um tanto uniforme:

```
next = previous * 16807 % 2147483647
```

If we use `1` as the seed, the values will be:
Se usarmos `1` como semente, os valores serão:
1. `16807`
2. `282475249`
3. `1622650073`
4. ...and so on...
4. ...e assim por diante...

The task is to create a generator function `pseudoRandom(seed)` that takes `seed` and creates the generator with this formula.
A tarefa é criar uma função geradora `pseudoRandom(semente)` que recebe uma `semente` e cria o gerador com esta fórmula.

Usage example:
Exemplo de uso:

```js
let generator = pseudoRandom(1);
Expand Down
Loading

0 comments on commit bb54132

Please sign in to comment.