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