Skip to content

Latest commit

 

History

History
38 lines (28 loc) · 837 Bytes

File metadata and controls

38 lines (28 loc) · 837 Bytes
function* pseudoRandom(seed) {
  let value = seed;

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

};

let generator = pseudoRandom(1);

alert(generator.next().value); // 16807
alert(generator.next().value); // 282475249
alert(generator.next().value); // 1622650073

Tenga en cuenta que se puede hacer lo mismo con una función regular, como esta:

function pseudoRandom(seed) {
  let value = seed;

  return function() {
    value = value * 16807 % 2147483647;
    return value;
  }
}

let generator = pseudoRandom(1);

alert(generator()); // 16807
alert(generator()); // 282475249
alert(generator()); // 1622650073

Eso también funciona. Pero luego perdemos la capacidad de iterar con for..of y usar la composición del generador, que puede ser útil en otros lugares.