source code for source:

if (npoints(0)==0) { vector2 h = set(@Time,chf('seed')); int hash0 = random_fhash(h); int hash1 = random_fhash(set(hash0/65536,hash0%65536)); int hash2 = random_fhash(set(hash1/65536,hash1%65536,hash0/65536,hash0%65536)); vector uv = set(float(random(hash0)),float(random(hash1)),float(random(hash2))); vector p = sample_sphere_uniform(uv)*chf('radius')+chv('location'); hash0 = random_fhash(uv); hash1 = random_fhash(set(hash0/65536,hash0%65536)); hash2 = random_fhash(set(hash1/65536,hash1%65536,hash0/65536,hash0%65536)); uv = set(float(random(hash0)),float(random(hash1)),float(random(hash2))); vector v = sample_sphere_uniform(uv)*chf('energy'); int pt = addpoint(0,p); setattrib(0,"point","v",pt,-1,v); }

Edit: A slight change, hash velocity off of uv instead of p, as p could be 0,0,0 if radius is 0. On popsolver, changed ‘reap at end’ to off to prevent ‘dead’ frames with no particles existing.