Seeding the random number generator in Javascript

后端 未结 13 1550
野趣味
野趣味 2020-11-22 09:28

Is it possible to seed the random number generator (Math.random) in Javascript?

13条回答
  •  野性不改
    2020-11-22 10:25

    I have written a function that returns a seeded random number, it uses Math.sin to have a long random number and uses the seed to pick numbers from that.

    Use :

    seedRandom("k9]:2@", 15)
    

    it will return your seeded number the first parameter is any string value ; your seed. the second parameter is how many digits will return.

         function seedRandom(inputSeed, lengthOfNumber){
    
               var output = "";
               var seed = inputSeed.toString();
               var newSeed = 0;
               var characterArray = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','y','x','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','U','R','S','T','U','V','W','X','Y','Z','!','@','#','$','%','^','&','*','(',')',' ','[','{',']','}','|',';',':',"'",',','<','.','>','/','?','`','~','-','_','=','+'];
               var longNum = "";
               var counter = 0;
               var accumulator = 0;
    
               for(var i = 0; i < seed.length; i++){
                    var a = seed.length - (i+1);
                    for(var x = 0; x < characterArray.length; x++){
                         var tempX = x.toString();
                         var lastDigit = tempX.charAt(tempX.length-1);
                         var xOutput = parseInt(lastDigit);
                         addToSeed(characterArray[x], xOutput, a, i); 
                    }                  
               }
    
                    function addToSeed(character, value, a, i){
                         if(seed.charAt(i) === character){newSeed = newSeed + value * Math.pow(10, a)}
                    }
                    newSeed = newSeed.toString();
    
                    var copy = newSeed;
               for(var i=0; i

提交回复
热议问题