Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // random.js
- // call this from the command line with:
- // C:\> cscript /nologo random.js
- // or from PowerShell
- // PS C:\> $myrandom = & cscript /nologo "c:\batch\random.js"
- // will create an array of 10 random numbers which you can then treat like any array variable:
- // PS C:\> $myrandom[4]
- // Calling without a seed, the current time will be used as a seed
- var srandom=Alea();
- // Calling with a seed will return the same value for the same seed
- //var seed=1234
- //var srandom=Alea(seed);
- var i=0
- // Return 10 random numbers
- while ( i < 10 ) {
- // Return a number between 1 and 500 million
- WScript.echo(Math.floor((srandom()*500000000)+1) );
- i++;
- }
- function Mash() {
- var n = 0xefc8249d;
- var mash = function(data) {
- data = data.toString();
- for (var i = 0; i < data.length; i++) {
- n += data.charCodeAt(i);
- var h = 0.02519603282416938 * n;
- n = h >>> 0;
- h -= n;
- h *= n;
- n = h >>> 0;
- h -= n;
- n += h * 0x100000000; // 2^32
- }
- return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
- };
- mash.version = 'Mash 0.9';
- return mash;
- }
- function Alea() {
- return (function(args) {
- // Johannes Baagoe <baagoe@baagoe.com>, 2010
- var s0 = 0;
- var s1 = 0;
- var s2 = 0;
- var c = 1;
- if (args.length == 0) {
- args = [+new Date];
- }
- var mash = Mash();
- s0 = mash(' ');
- s1 = mash(' ');
- s2 = mash(' ');
- for (var i = 0; i < args.length; i++) {
- s0 -= mash(args[i]);
- if (s0 < 0) {
- s0 += 1;
- }
- s1 -= mash(args[i]);
- if (s1 < 0) {
- s1 += 1;
- }
- s2 -= mash(args[i]);
- if (s2 < 0) {
- s2 += 1;
- }
- }
- mash = null;
- var random = function() {
- var t = 2091639 * s0 + c * 2.3283064365386963e-10; // 2^-32
- s0 = s1;
- s1 = s2;
- return s2 = t - (c = t | 0);
- };
- random.uint32 = function() {
- return random() * 0x100000000; // 2^32
- };
- random.fract53 = function() {
- return random() +
- (random() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53
- };
- random.version = 'Alea 0.9';
- random.args = args;
- return random;
- } (Array.prototype.slice.call(arguments)));
- };
- /* licensed according to the MIT - Expat license:
- Copyright (C) 2010 by Johannes Baagoe <baagoe@baagoe.org>
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement