Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 0f0618c

Browse filesBrowse files
fix #3
1 parent 0933418 commit 0f0618c
Copy full SHA for 0f0618c
Expand file treeCollapse file tree

10 files changed

+244
-4
lines changed

‎js/dist/random.js

Copy file name to clipboardExpand all lines: js/dist/random.js
+26-2Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,37 @@ var randint = function ( i , j ) {
9090

9191
exports.randint = randint ;
9292

93-
/* js/src/001-api/002-sample.js */
93+
/* js/src/001-api/002-randrange.js */
94+
95+
/**
96+
* Return a randomly selected element from range(start, stop, step).
97+
*/
98+
99+
var randrange = function ( start , stop , step ) {
100+
101+
// TODO handle empty ranges
102+
103+
if ( stop === undefined ) return randint( 0 , start ) ;
104+
if ( step === undefined ) step = 1 ;
105+
106+
if ( stop >= start ) {
107+
return start + step * randint( 0 , Math.floor( ( stop - start ) / step ) ) ;
108+
}
109+
else {
110+
return start + step * randint( 0 , Math.floor( ( start - stop ) / -step ) ) ;
111+
}
112+
113+
} ;
114+
115+
exports.randrange = randrange ;
116+
117+
/* js/src/001-api/003-sample.js */
94118

95119
var sample = _fisheryates( randint ) ;
96120

97121
exports.sample = sample ;
98122

99-
/* js/src/001-api/003-shuffle.js */
123+
/* js/src/001-api/004-shuffle.js */
100124

101125
var shuffle = _shuffle( sample ) ;
102126

‎js/dist/random.js.map

Copy file name to clipboardExpand all lines: js/dist/random.js.map
+1-1Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎js/dist/random.min.js

Copy file name to clipboardExpand all lines: js/dist/random.min.js
+1-1Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎js/src/001-api/002-randrange.js

Copy file name to clipboard
+22Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
/**
3+
* Return a randomly selected element from range(start, stop, step).
4+
*/
5+
6+
var randrange = function ( start , stop , step ) {
7+
8+
// TODO handle empty ranges
9+
10+
if ( stop === undefined ) return randint( 0 , start ) ;
11+
if ( step === undefined ) step = 1 ;
12+
13+
if ( stop >= start ) {
14+
return start + step * randint( 0 , Math.floor( ( stop - start ) / step ) ) ;
15+
}
16+
else {
17+
return start + step * randint( 0 , Math.floor( ( start - stop ) / -step ) ) ;
18+
}
19+
20+
} ;
21+
22+
exports.randrange = randrange ;
File renamed without changes.
File renamed without changes.

‎test/js/src/randrange_only_stop.js

Copy file name to clipboard
+40Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
var util, type;
3+
4+
util = require( "util" );
5+
6+
type = require( "aureooms-js-type" );
7+
8+
9+
10+
test( "randrange only stop", function () {
11+
12+
var i, n, r, rj, check;
13+
14+
n = 5000;
15+
rj = n;
16+
17+
check = function () {
18+
ok( r < rj, util.format( "%s < %s", r, rj ) );
19+
ok( r >= 0, util.format( "%s >= %s", r, 0 ) );
20+
ok( type.isint(r), util.format( "type.isint(%s)", r ) );
21+
};
22+
23+
for ( i = 1 ; i < n ; ++i ) {
24+
r = random.randrange( rj );
25+
26+
check();
27+
28+
--rj;
29+
}
30+
31+
for ( i = 1 ; i < n ; ++i ) {
32+
r = random.randrange( rj );
33+
34+
check();
35+
36+
++rj;
37+
}
38+
39+
40+
});
+52Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
2+
var util, type;
3+
4+
util = require( "util" );
5+
6+
type = require( "aureooms-js-type" );
7+
8+
test( "randrange with negative step", function () {
9+
10+
var i, n, r, ri, rj, check , step;
11+
12+
n = 5000;
13+
ri = -n;
14+
rj = n;
15+
16+
check = function () {
17+
ok( r <= rj, util.format( "%s <= %s", r, rj ) );
18+
ok( r > ri, util.format( "%s > %s", r, ri ) );
19+
ok( (rj - r) % (-step) === 0, util.format( "(%s - %s) %% (-%s) === 0", rj, r ,step ) );
20+
ok( type.isint(r), util.format( "type.isint(%s)", r ) );
21+
};
22+
23+
for ( step = -3 ; step <= -1 ; ++step ) {
24+
25+
for ( i = 0 ; i < n ; ++i ) {
26+
r = random.randrange( rj, ri , step );
27+
28+
check();
29+
30+
++ri;
31+
}
32+
33+
for ( i = 0 ; i < n ; ++i ) {
34+
r = random.randrange( rj, ri , step );
35+
36+
check();
37+
38+
--ri;
39+
--rj;
40+
}
41+
42+
for ( i = 0 ; i < n ; ++i ) {
43+
r = random.randrange( rj, ri , step );
44+
45+
check();
46+
47+
++rj;
48+
}
49+
50+
}
51+
52+
});
+52Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
2+
var util, type;
3+
4+
util = require( "util" );
5+
6+
type = require( "aureooms-js-type" );
7+
8+
test( "randrange with positive step", function () {
9+
10+
var i, n, r, ri, rj, check , step;
11+
12+
n = 5000;
13+
ri = -n;
14+
rj = n;
15+
16+
check = function () {
17+
ok( r < rj, util.format( "%s < %s", r, rj ) );
18+
ok( r >= ri, util.format( "%s >= %s", r, ri ) );
19+
ok( (r - ri) % step === 0, util.format( "(%s - %s) %% %s === 0", r, ri ,step ) );
20+
ok( type.isint(r), util.format( "type.isint(%s)", r ) );
21+
};
22+
23+
for ( step = 1 ; step <= 3 ; ++step ) {
24+
25+
for ( i = 0 ; i < n ; ++i ) {
26+
r = random.randrange( ri, rj , step );
27+
28+
check();
29+
30+
++ri;
31+
}
32+
33+
for ( i = 0 ; i < n ; ++i ) {
34+
r = random.randrange( ri, rj , step );
35+
36+
check();
37+
38+
--ri;
39+
--rj;
40+
}
41+
42+
for ( i = 0 ; i < n ; ++i ) {
43+
r = random.randrange( ri, rj , step );
44+
45+
check();
46+
47+
++rj;
48+
}
49+
50+
}
51+
52+
});

‎test/js/src/randrange_without_step.js

Copy file name to clipboard
+50Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
2+
var util, type;
3+
4+
util = require( "util" );
5+
6+
type = require( "aureooms-js-type" );
7+
8+
9+
10+
test( "randrange without step", function () {
11+
12+
var i, n, r, ri, rj, check;
13+
14+
n = 5000;
15+
ri = -n;
16+
rj = n;
17+
18+
check = function () {
19+
ok( r < rj, util.format( "%s < %s", r, rj ) );
20+
ok( r >= ri, util.format( "%s >= %s", r, ri ) );
21+
ok( type.isint(r), util.format( "type.isint(%s)", r ) );
22+
};
23+
24+
for ( i = 0 ; i < n ; ++i ) {
25+
r = random.randrange( ri, rj );
26+
27+
check();
28+
29+
++ri;
30+
}
31+
32+
for ( i = 0 ; i < n ; ++i ) {
33+
r = random.randrange( ri, rj );
34+
35+
check();
36+
37+
--ri;
38+
--rj;
39+
}
40+
41+
for ( i = 0 ; i < n ; ++i ) {
42+
r = random.randrange( ri, rj );
43+
44+
check();
45+
46+
++rj;
47+
}
48+
49+
50+
});

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.