| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| part of dart.math; |
| |
| /** |
| * A generator of random bool, int, or double values. |
| * |
| * The default implementation supplies a stream of |
| * pseudo-random bits that are not suitable for cryptographic purposes. |
| * |
| * Use the Random.secure() constructor for cryptographic |
| * purposes. |
| */ |
| abstract class Random { |
| /** |
| * Creates a random number generator. |
| * |
| * The optional parameter [seed] is used to initialize the |
| * internal state of the generator. The implementation of the |
| * random stream can change between releases of the library. |
| */ |
| factory Random([int seed = -1]) { |
| var state = _Random._setupSeed((seed == -1) ? _Random._nextSeed() : seed); |
| // Crank a couple of times to distribute the seed bits a bit further. |
| return new _Random._withState(state) |
| .._nextState() |
| .._nextState() |
| .._nextState() |
| .._nextState(); |
| } |
| |
| /** |
| * Creates a cryptographically secure random number generator. |
| * |
| * If the program cannot provide a cryptographically secure |
| * source of random numbers, it throws an [UnsupportedError]. |
| */ |
| factory Random.secure() { |
| return new _SecureRandom(); |
| } |
| |
| /** |
| * Generates a non-negative random integer uniformly distributed in the range |
| * from 0, inclusive, to [max], exclusive. |
| * |
| * Implementation note: The default implementation supports [max] values |
| * between 1 and (1<<32) inclusive. |
| */ |
| int nextInt(int max); |
| |
| /** |
| * Generates a non-negative random floating point value uniformly distributed |
| * in the range from 0.0, inclusive, to 1.0, exclusive. |
| */ |
| double nextDouble(); |
| |
| /** |
| * Generates a random boolean value. |
| */ |
| bool nextBool(); |
| } |