JavaScript有偏见的结果?

1 javascript arrays random jquery

假设我在数组中有两个项目,例如:

["a", "b"]
Run Code Online (Sandbox Code Playgroud)

现在假设我有一个名为random的函数,它从这个数组中选择一个随机项,例如:

function random() {
  // do awesome random stuff here...
  return random_choice;
}
Run Code Online (Sandbox Code Playgroud)

如何让random函数返回"a"80%的时间和"b"20%的时间?

我不确定这是什么叫做但是例如如果我跑了console.log(random());10次​​结果应该看起来像这样:

>>> "a"
>>> "a"
>>> "a"
>>> "a"
>>> "a"
>>> "a"
>>> "a"
>>> "a"
>>> "b"
>>> "b"
Run Code Online (Sandbox Code Playgroud)

"a"得到8/10次返回并"b"返回2/10次.

注意:上面的"结果"只是一个例子,我知道它们并不总是那么完美而且它们不一定是.

Mic*_*ski 6

最快的答案是:

var result = Math.random() >= 0.2 ? "a" : "b";
Run Code Online (Sandbox Code Playgroud)

  • 由于0是包含的而1不是,你的`Math.random()> 0.2?'a':'b'`表示79%的几率选择`a`,21%的几率选择`b`.我认为你的意思是`> =`,这将使其在OP中成为80/20. (2认同)
  • @ vol7ron我想它会更像79.9999999999999999%但是,你还是对的:) (2认同)