| Index: test/codegen/lib/math/coin_test.dart
|
| diff --git a/test/codegen/lib/math/coin_test.dart b/test/codegen/lib/math/coin_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1ca2261884fd525e58183128752a0d8ea956c25d
|
| --- /dev/null
|
| +++ b/test/codegen/lib/math/coin_test.dart
|
| @@ -0,0 +1,62 @@
|
| +// 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.
|
| +
|
| +// Test that a coin toss with Random.nextBool() is fair.
|
| +
|
| +// Library tag to allow Dartium to run the test.
|
| +library coin_test;
|
| +
|
| +import "package:expect/expect.dart";
|
| +import 'dart:math';
|
| +
|
| +main() {
|
| + var seed = new Random().nextInt(1<<16);
|
| + print("coin_test seed: $seed");
|
| + var rnd = new Random(seed);
|
| + var heads = 0;
|
| + var tails = 0;
|
| + for (var i = 0; i < 10000; i++) {
|
| + if (rnd.nextBool()) {
|
| + heads++;
|
| + } else {
|
| + tails++;
|
| + }
|
| + }
|
| + print("Heads: $heads\n"
|
| + "Tails: $tails\n"
|
| + "Ratio: ${heads/tails}\n");
|
| + Expect.approxEquals(1.0, heads/tails, 0.1);
|
| +
|
| + heads = 0;
|
| + tails = 0;
|
| + for (var i = 0; i < 10000; i++) {
|
| + rnd = new Random(i);
|
| + if (rnd.nextBool()) {
|
| + heads++;
|
| + } else {
|
| + tails++;
|
| + }
|
| + }
|
| + print("Heads: $heads\n"
|
| + "Tails: $tails\n"
|
| + "Ratio: ${heads/tails}\n");
|
| + Expect.approxEquals(1.0, heads/tails, 0.1);
|
| +
|
| + // A sequence of newly allocated Random number generators should have fair
|
| + // initial tosses.
|
| + heads = 0;
|
| + tails = 0;
|
| + for (var i = 0; i < 10000; i++) {
|
| + rnd = new Random();
|
| + if (rnd.nextBool()) {
|
| + heads++;
|
| + } else {
|
| + tails++;
|
| + }
|
| + }
|
| + print("Heads: $heads\n"
|
| + "Tails: $tails\n"
|
| + "Ratio: ${heads/tails}\n");
|
| + Expect.approxEquals(1.0, heads/tails, 0.1);
|
| +}
|
|
|