text: // Transcrypt'ed from Python, 2019-01-22 11:21:52
  var math = {};
  import {AssertionError, AttributeError, BaseException, DeprecationWarning, Exception, IndexError, IterableError, KeyError, NotImplementedError, RuntimeWarning, StopIteration, UserWarning, ValueError, Warning, __JsIterator__, __PyIterator__, __Terminal__, __add__, __and__, __call__, __class__, __envir__, __eq__, __floordiv__, __ge__, __get__, __getcm__, __getitem__, __getslice__, __getsm__, __gt__, __i__, __iadd__, __iand__, __idiv__, __ijsmod__, __ilshift__, __imatmul__, __imod__, __imul__, __in__, __init__, __ior__, __ipow__, __irshift__, __isub__, __ixor__, __jsUsePyNext__, __jsmod__, __k__, __kwargtrans__, __le__, __lshift__, __lt__, __matmul__, __mergefields__, __mergekwargtrans__, __mod__, __mul__, __ne__, __neg__, __nest__, __or__, __pow__, __pragma__, __proxy__, __pyUseJsNext__, __rshift__, __setitem__, __setproperty__, __setslice__, __sort__, __specialattrib__, __sub__, __super__, __t__, __terminal__, __truediv__, __withblock__, __xor__, abs, all, any, assert, bool, bytearray, bytes, callable, chr, copy, deepcopy, delattr, dict, dir, divmod, enumerate, filter, float, format, getattr, hasattr, input, int, isinstance, issubclass, len, list, map, max, min, object, ord, pow, print, property, py_TypeError, py_iter, py_metatype, py_next, py_reversed, py_typeof, range, repr, round, set, setattr, sorted, str, sum, tuple, zip} from './org.transcrypt.__runtime__.js';
  import * as __module_math__ from './math.js';
  __nest__ (math, '', __module_math__);
  var __name__ = 'random';
  export var _array = (function () {
  	var __accu0__ = [];
  	for (var i = 0; i < 624; i++) {
  		__accu0__.append (0);
  	}
  	return __accu0__;
  }) ();
  export var _index = 0;
  export var _bitmask1 = Math.pow (2, 32) - 1;
  export var _bitmask2 = Math.pow (2, 31);
  export var _bitmask3 = Math.pow (2, 31) - 1;
  export var _fill_array = function () {
  	for (var i = 0; i < 624; i++) {
  		var y = (_array [i] & _bitmask2) + (_array [__mod__ (i + 1, 624)] & _bitmask3);
  		_array [i] = _array [__mod__ (i + 397, 624)] ^ y >> 1;
  		if (__mod__ (y, 2) != 0) {
  			_array [i] ^= 2567483615;
  		}
  	}
  };
  export var _random_integer = function () {
  	if (_index == 0) {
  		_fill_array ();
  	}
  	var y = _array [_index];
  	y ^= y >> 11;
  	y ^= y << 7 & 2636928640;
  	y ^= y << 15 & 4022730752;
  	y ^= y >> 18;
  	_index = __mod__ (_index + 1, 624);
  	return y;
  };
  export var seed = function (x) {
  	if (typeof x == 'undefined' || (x != null && x.hasOwnProperty ("__kwargtrans__"))) {;
  		var x = int (_bitmask3 * Math.random ());
  	};
  	_array [0] = x;
  	for (var i = 1; i < 624; i++) {
  		_array [i] = (1812433253 * _array [i - 1] ^ (_array [i - 1] >> 30) + i) & _bitmask1;
  	}
  };
  export var randint = function (a, b) {
  	return a + __mod__ (_random_integer (), (b - a) + 1);
  };
  export var choice = function (seq) {
  	return seq [randint (0, len (seq) - 1)];
  };
  export var random = function () {
  	return _random_integer () / _bitmask3;
  };
  export var shuffle = function (x) {
  	for (var i = len (x) - 1; i > 0; i--) {
  		var j = math.floor (random () * (i + 1));
  		var temp = x [i];
  		x [i] = x [j];
  		x [j] = temp;
  	}
  };
  seed ();
  
  //# sourceMappingURL=random.map