in javascript you can't seed Math.random, if you want something you can seed you have to implement a PRNG yourself

i needed a function that returned a "random" value in [0, 1), like Math.random does, but seedable. importantly, it wasn't for anything even slightly cryptographic or whatever. i had absolutely no requirements for the quality of the output beyond "seems vaguely random to a person"

so here's the simplest, and probably worst (but good enough) PRNG function i found online:

let seed = WHATEVER_NUMBER;
function random() {
const x = seed++/Math.PI;
return x - Math.floor(x);
}

@monorail also, reported a second time for using a function declaration

@wallhackio is function random() {} equivalent to like var random = () => {}; and that's why it's bad or

@monorail function declarations create global variables because javascript sucks

@wallhackio @monorail Global variables, as opposed to what?
You're declaring the function outside of any scope, so what else can it even be except global? Per-file scope like static in C? :psyduck:

Follow

@vaporeon_ @monorail if my web page loaded two javascript files, (lets call them one.js and two.js)

and one.js defines a function

function globalFunc() {
console.log('I am global');
}

then two.js can use that function

@wallhackio @monorail Oh!
Functions are global by default in C, too, unless you declare the functions as static

re: wrong 

@wallhackio @monorail Reported [not actually because I'm a coward] for slandering my favourite programming language

(Also, name a circumstance where you don't want functions to be global?)

re: wrong 

@vaporeon_ @monorail in javascript functions can be reassigned

so lets say you work on a web site for your company that uses old-ass ES5 javascript because it was first made in 2009 and its for a government contractor who won't fund what is necessary for your team to change to a newer javascript workflow, so you're stuck with it

In one file, a coworker who no longer works at the company 10 years ago created a function called gorp like so: function gorp() { /* whatever gorp does */}

Now, today you are working on a file that has a function called girp and you reassign it something else. However, you make a typo and write gorp instead. This does not throw at runtime because gorp is global, and now you have bugs that are extremely difficult to decipher because you didn't notice a typo

Sign in to participate in the conversation
📟🐱 GlitchCat

A small, community‐oriented Mastodon‐compatible Fediverse (GlitchSoc) instance managed as a joint venture between the cat and KIBI families.