0

我已经制作了某种编码函数,它使用一个包含 62 个字符(az、AZ、0-9)的数组,然后我使用一个随机数来访问其中一个。
但是如果我使用它,它会返回很多字母,并且我想要与数字一样多的字母(这也是合乎逻辑的,因为数字的机会是 10/62 与 50/62)
有人能告诉我一些生成随机数的函数吗数字,但有更高的机会获得 52-62 之间的值,然后是低于 52 的值。

4

4 回答 4

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));
}
于 2012-05-22T19:04:45.513 回答
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));
于 2012-05-22T19:00:58.417 回答
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);
    }
}
于 2012-05-22T19:01:06.643 回答
0

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

于 2012-05-22T19:01:09.537 回答