javascript随机数使得获得一些价值的机会更大

时间:2012-05-22 18:56:44

标签: javascript random

我做了一些使用62个字符的数组的编码函数(a-z,A-Z,0-9) 然后我用一个随机数来访问其中一个。
但是,如果我使用它,它会返回多个字母,我希望尽可能多的字母作为数字(这也是合乎逻辑的,因为数字上的机会是10/62而不是50/62)
有人可以告诉我一些生成随机数的函数,但是有更高的机会得到一个介于52-62之间,然后是52之下的值。

4 个答案:

答案 0 :(得分:4)

这使您有50/50的机会获得数字:

var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var digits = "0123456789";

function getRandomChar() {
  var r = Math.random();
  return r < 0.5 ? letters.charAt(Math.floor(r*letters.length*2)) : digits.charAt(Math.floor((r-0.5)*digits.length*2));
}

答案 1 :(得分:0)

如果你想获得0..100之间的随机值,但是在50..60中有更高的机会,你应该在方程式中添加第二个随机函数:

var rnd = Math.round(Math.random()*( 100 - 50 ) + Math.round(Math.random()*10));

在这种情况下,第一个随机数生成在0到50之间,然后它有可能更高,直到60

在52-62的情况下,它应该是这样的:

var rnd = Math.round(Math.random()*( 52 ) + Math.round(Math.random()*10));

答案 2 :(得分:0)

function getRandomIndex(){
    // flip a coin... 50% chance the if occurs, 50% chance the else occurs
    if(Math.floor(Math.random() * 2) == 0){
        // return the number random function, values 52 and up
        return Math.floor(Math.random() * 10) + 52;
    }
    else{
        // return the character random function, values 0 to 51
        return Math.floor(Math.random() * 52);
    }
}

答案 3 :(得分:0)

首先在0和1(头部或尾部)之间选择,如果是1,则使用仅返回数字的单独函数。否则返回一个带有单独函数的字母,该函数只返回字母。