Get a random number focused on center

后端 未结 20 2986
离开以前
离开以前 2020-12-12 09:28

Is it possible to get a random number between 1-100 and keep the results mainly within the 40-60 range? I mean, it will go out of that range rarely, but I want it to be main

20条回答
  •  失恋的感觉
    2020-12-12 09:30

    The simplest way would be to generate two random numbers from 0-50 and add them together.

    This gives a distribution biased towards 50, in the same way rolling two dice biases towards 7.

    In fact, by using a larger number of "dice" (as @Falco suggests), you can make a closer approximation to a bell-curve:

    function weightedRandom(max, numDice) {
        let num = 0;
        for (let i = 0; i < numDice; i++) {
            num += Math.random() * (max/numDice);
        }    
        return num;
    }
    

    Weighted random numbers

    JSFiddle: http://jsfiddle.net/797qhcza/1/

提交回复
热议问题