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 11``` js run demo
2+
23function * pseudoRandom (seed ) {
4+
35 let value = seed;
46
57 while (true ) {
8+
69 value = value * 16807 % 2147483647 ;
10+
711 yield value;
12+
813 }
914
1015};
1116
1217let generator = pseudoRandom (1 );
1318
1419alert (generator .next ().value ); // 16807
20+
1521alert (generator .next ().value ); // 282475249
22+
1623alert (generator .next ().value ); // 1622650073
24+
1725```
1826
19- Please note, the same can be done with a regular function, like this:
27+
28+ توجه داشته باشید که این کار را با توابع عادی هم میتوان انجام داد:
2029
2130``` js run
31+
2232function pseudoRandom (seed ) {
33+
2334 let value = seed;
2435
2536 return function () {
37+
2638 value = value * 16807 % 2147483647 ;
39+
2740 return value;
41+
2842 }
43+
2944}
3045
3146let generator = pseudoRandom (1 );
3247
3348alert (generator ()); // 16807
49+
3450alert (generator ()); // 282475249
51+
3552alert (generator ()); // 1622650073
53+
3654```
3755
38- That also works. But then we lose ability to iterate with ` for..of ` and to use generator composition, that may be useful elsewhere.
56+
57+ این گونه هم کار میکند. منتها قابلیت iterate کردن با ` for..of ` و generator composition از دست میرود که ممکن است جای دیگری مفید باشند.
You can’t perform that action at this time.
0 commit comments