UNPKG

codehs-graphics

Version:

Helpers used to run graphics problems in the CodeHS editor.

84 lines (74 loc) 2.26 kB
'use strict'; /** * @module Randomizer */ /** * Get a random integer between low to high, inclusive. * If only one parameter is given, a random integer * from (0, low-1) inclusive. * @param {number} low - Lower bound on range of random int. * @param {number} high - Upper bound on range of random int. * @returns {number} Random number between low and high, inclusive. */ var nextInt = function(low, high) { if(typeof high == 'undefined'){ high = low - 1; low = 0; } low = Math.floor(low); var r = Math.random(); return low + Math.floor(r * (high - low + 1)); }; /** * Get a random float between low to high, inclusive. * If only one parameter is given, a random float * from (0, low-1) inclusive. * @param {number} low - Lower bound on range of random int. * @param {number} high - Upper bound on range of random int. * @returns {number} Random number between low and high, inclusive. */ var nextFloat = function(low, high) { if(typeof high == 'undefined'){ high = low; low = 0; } return low + (high - low) * Math.random(); }; /** * Generates a random number in range (0,255) in hexadecimal. * @returns {string} Random number in hexadecimal form. */ var nextHex = function() { var val = nextInt(0, 255); if (val < 16) return '0' + val.toString(16); return val.toString(16); }; /** * Generate a random hexadecimal color code of the format #RRGGBB. * @returns {string} Hexadecimal representation of random color. */ var nextColor = function() { var r = nextHex(); var g = nextHex(); var b = nextHex(); return "#" + r + g + b; }; /** * Generate a random boolean via fair probability coin toss. * If `probabilityTrue` is supplied, the coin toss is skewed by that value. * @param {number} probabilityTrue - Skewed probability of true. * @returns {boolean} Result of coin flip skewed toward `probabilityTrue`. */ var nextBoolean = function(probabilityTrue) { if(typeof probabilityTrue == 'undefined'){ probabilityTrue = 0.5; } return Math.random() < probabilityTrue; }; module.exports = { nextInt: nextInt, nextFloat: nextFloat, nextHex: nextHex, nextColor: nextColor, nextBoolean: nextBoolean, };