Skip to main content

generate unique random number between a range using static class in typescript

I am creating a simple class which includes all four methods for different type of random occurrence and based on random range its generate a unique set of the random numbers between ranges.





working link=>
https://stackblitz.com/edit/typescript-qrmqc4

code=>

enum randomType
{
includeMinMax=0,
exculdeMin=1,
exculdeMax=2,
exculdeMinMax=3

}
//get random number between two range
class seedRandom
{
static maxOccur=100;
//min and max include
public static getRandomNumber(min:number,max:number)
{
return Math.round(Math.random()*(max-min)+min);
}
//if you don't wanna include max value or max exclude
public static getRandomNumberNotMax(min:number,max:number)
{
return Math.round(Math.random()*(max-(min+1))+min);
}
//if you don't wanna include min value or min exclude
public static getRandomNumberNotMin(min:number,max:number)
{
return Math.ceil(Math.random()*(max-min))+(min);
}
//if you don't wanna include min value and max value or min and max exclude
public static getRandomNumberNotMinAndMax(min:number,max:number)
{
return Math.ceil(Math.random()*((max-1)-min))+(min);
}
//get a range
public static uniqueRandomSet(min:number,max:number,total:number,
RandomType:randomType=randomType.includeMinMax):Array<number>
{
if(this.maxOccur<=total)
{
throw new Error("are you druck increase maxOccur ")
}
let rNumbers:Array<number>=[];
for(let i=0;i<this.maxOccur;i++)
{
let random;
switch(RandomType)
{
case randomType.includeMinMax:
random=this.getRandomNumber(min,max);
break;
case randomType.exculdeMin:
random=this.getRandomNumberNotMin(min,max);
break;
case randomType.exculdeMax:
random= this.getRandomNumberNotMax(min,max);
break;
case randomType.exculdeMinMax:
random=this.getRandomNumberNotMin(min,max);
break;
}

while(rNumbers.indexOf(random)===-1)
{
rNumbers.push(random);
}
if(rNumbers.length===total)
{
return rNumbers;
}
}
return rNumbers;
}
}

console.log(seedRandom.uniqueRandomSet(11,41,10,randomType.exculdeMax));

Comments

Popular posts from this blog

Better Memory management with PixiJS or How to manage cpu and cpu memory in PixiJS.

PixiJS is my favorite framework when i am looking for a web games specially for mobile or desktop  PixiJS is fast blazing fast and you can get a decent FPS even on older device.   so here is my optimization techniques for PixiJs 1. manage your sprites in a better way use spritesheet to reduce the draw calls create big sprite sheet which contain multiple sprites can be draw in gpu with a single draw call. use TexturePacker  https://www.codeandweb.com/texturepacker  best tool when its comes to spritesheet 2. for floating point calculation round off calculation for example let  speed = 0.75 ; let  position = 100 ; console . log ( Math . round ( speed * position )) 3. don't create very big canvas when u need a big canvas size game just try to create a small canvas and translate it. 4. its very important one managing TextureCache in memory you can get all TextureCache list by using  Object.entries(PIXI.utils.TextureCache); so even you use ap...

adding particles Effect in pixijs using https://pixijs.io/pixi-particles-editor/

adding particle in pixijs is very easy using the below tool more information can be found below https://github.com/pixijs/pixi-particles https://pixijs.io/pixi-particles-editor/ required packages  /// < reference path = "node_modules/pixi-particles/ambient.d.ts" /> import 'pixi-particles' code of particle delcare a     global variable   private emitter ?: Emitter ; const img = PIXI . Texture . from ( "./assets/images/particle.png" ); this . emitter = new Emitter ( this ,[ img ],{ "alpha" : { "start" : 0.62 , "end" : 0.39 }, "scale" : { "start" : 0.1 , "end" : 0.9 , "minimumScaleMultiplier" : 1.25 }, "color" : { "start" : "#ffff8f" , "end" : ...