Skip to content

Commit 0c37a69

Browse files
committed
Add Typescript definition
1 parent 3422892 commit 0c37a69

File tree

3 files changed

+416
-0
lines changed

3 files changed

+416
-0
lines changed
Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
/*
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2019 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
// TypeScript Version: 2.0
20+
21+
/// <reference types="@stdlib/types"/>
22+
23+
import * as random from '@stdlib/types/random';
24+
25+
/**
26+
* Interface defining `factory` options.
27+
*/
28+
interface Options {
29+
/**
30+
* Pseudorandom number generator which generates uniformly distributed pseudorandom numbers.
31+
*/
32+
prng?: random.PRNG;
33+
34+
/**
35+
* Pseudorandom number generator seed.
36+
*/
37+
seed?: random.PRNGSeedMT19937;
38+
39+
/**
40+
* Pseudorandom number generator state.
41+
*/
42+
state?: random.PRNGStateMT19937;
43+
44+
/**
45+
* Specifies whether to copy a provided pseudorandom number generator state.
46+
*/
47+
copy?: boolean;
48+
}
49+
50+
/**
51+
* Interface for PRNG properties and methods.
52+
*/
53+
interface PRNG {
54+
/**
55+
* Generator name.
56+
*/
57+
readonly NAME: string;
58+
59+
/**
60+
* Underlying pseudorandom number generator.
61+
*/
62+
readonly PRNG: random.PRNG;
63+
64+
/**
65+
* PRNG seed.
66+
*/
67+
readonly seed: random.PRNGSeedMT19937;
68+
69+
/**
70+
* PRNG seed length.
71+
*/
72+
readonly seedLength: number;
73+
74+
/**
75+
* PRNG state.
76+
*/
77+
state: random.PRNGStateMT19937;
78+
79+
/**
80+
* PRNG state length.
81+
*/
82+
readonly stateLength: number;
83+
84+
/**
85+
* PRNG state size (in bytes).
86+
*/
87+
readonly byteLength: number;
88+
89+
/**
90+
* Serializes the pseudorandom number generator as a JSON object.
91+
*
92+
* @returns out - JSON representation
93+
*/
94+
toJSON(): string;
95+
}
96+
97+
/**
98+
* Interface for generating Poisson distributed pseudorandom numbers with pre-specified parameter values.
99+
*/
100+
interface NullaryFunction extends PRNG {
101+
/**
102+
* Returns a Poisson distributed pseudorandom number.
103+
*
104+
* @returns pseudorandom number
105+
*/
106+
(): number;
107+
}
108+
109+
/**
110+
* Interface for generating Poisson distributed pseudorandom numbers without pre-specified parameter values.
111+
*/
112+
interface BinaryFunction extends PRNG {
113+
/**
114+
* Returns a Poisson distributed pseudorandom number.
115+
*
116+
* @param lambda - mean
117+
* @returns pseudorandom number
118+
*/
119+
( lambda: number ): number;
120+
}
121+
122+
/**
123+
* Interface for generating pseudorandom numbers drawn from a Poisson distribution.
124+
*/
125+
interface Random extends PRNG {
126+
/**
127+
* Returns a Poisson distributed pseudorandom number.
128+
*
129+
* ## Notes
130+
*
131+
* - If `lambda <= 0`, the function returns `NaN`.
132+
* - If `lambda` is `NaN`, the function returns `NaN`.
133+
*
134+
* @param lambda - mean
135+
* @returns pseudorandom number
136+
*
137+
* @example
138+
* var v = poisson( 1.5 );
139+
* // returns <number>
140+
*/
141+
( lambda: number ): number;
142+
143+
/**
144+
* Returns a pseudorandom number generator for generating Poisson distributed random numbers.
145+
*
146+
* ## Notes
147+
*
148+
* - When provided `lambda`, the returned PRNG returns random variates drawn from the specified distribution.
149+
*
150+
* @param lambda - mean
151+
* @param options - function options
152+
* @param options.prng - pseudorandom number generator which generates uniformly distributed pseudorandom numbers
153+
* @param options.seed - pseudorandom number generator seed
154+
* @param options.state - pseudorandom number generator state
155+
* @param options.copy - boolean indicating whether to copy a provided pseudorandom number generator state (default: true)
156+
* @throws must provide a valid state
157+
* @returns pseudorandom number generator
158+
*
159+
* @example
160+
* var mypoisson = poisson.factory( 1.5 );
161+
*
162+
* var v = mypoisson();
163+
* // returns <number>
164+
*
165+
* @example
166+
* var mypoisson = poisson.factory( 2.3, {
167+
* 'seed': 297
168+
* });
169+
* var v = mypoisson();
170+
* // returns <number>
171+
*/
172+
factory( lambda: number, options?: Options ): NullaryFunction;
173+
174+
/**
175+
* Returns a pseudorandom number generator for generating Poisson distributed random numbers.
176+
*
177+
* ## Notes
178+
*
179+
* - When not provided `lambda`, the returned PRNG requires that `lambda` be provided at each invocation.
180+
*
181+
* @param options - function options
182+
* @param options.prng - pseudorandom number generator which generates uniformly distributed pseudorandom numbers
183+
* @param options.seed - pseudorandom number generator seed
184+
* @param options.state - pseudorandom number generator state
185+
* @param options.copy - boolean indicating whether to copy a provided pseudorandom number generator state (default: true)
186+
* @throws must provide a valid state
187+
* @returns pseudorandom number generator
188+
*
189+
* @example
190+
* var mypoisson = poisson.factory();
191+
*
192+
* var v = mypoisson( 1.5 );
193+
* // returns <number>
194+
*
195+
* @example
196+
* var mypoisson = poisson.factory({
197+
* 'seed': 297
198+
* });
199+
* var v = mypoisson( 2.3 );
200+
* // returns <number>
201+
*/
202+
factory( options?: Options ): BinaryFunction;
203+
}
204+
205+
/**
206+
* Returns a Poisson distributed pseudorandom number.
207+
*
208+
* ## Notes
209+
*
210+
* - If `lambda <= 0`, the function returns `NaN`.
211+
* - If `lambda` is `NaN`, the function returns `NaN`.
212+
*
213+
* @param lambda - mean
214+
* @returns pseudorandom number
215+
*
216+
* @example
217+
* var v = poisson( 1.5 );
218+
* // returns <number>
219+
*
220+
* @example
221+
* var mypoisson = poisson.factory( 1.5 );
222+
*
223+
* var v = mypoisson();
224+
* // returns <number>
225+
*/
226+
declare var poisson: Random;
227+
228+
229+
// EXPORTS //
230+
231+
export = poisson;

0 commit comments

Comments
 (0)