获得鱼元素的几率 Probability
Chance of obtaining fish element Probability
我正在尝试获取获得一些鱼的百分比。
X
是这里的唯一数字,它在 0-99 之间,但在我的示例代码中它是 70,用于测试目的。
但目前它returns确实是错误的结果,所以我在这里做错了。
当前输出:
[-0.17142857142857143, 0.04285714285714286, 0.2571428571428571, 0.2714285714285714]
这意味着
- -17% 得到
fish1
,
- 4.2% 对于
fish2
、
- 25.7%
fish3
,
- 27%
fish4
.
正确的数学公式如下:
如果X号是82+,就会得到1条鱼。
如果 X 数为 67+,则为鱼 2(除非 82+ 等)。
如果 x 数为 52+,则为鱼 3。
如果小于或等于 51,则为鱼 4。
所以理论上,x
为85,获得的几率是3/85
然后我需要当前 X 获得特定鱼的概率。
我在这里做错了什么?
function fishesPercentage(X) {
var NumberSelected = RandomNumber(0,X-1);
NumberSelected = 70;
console.log("RANDOOM NUMBER IS : ",NumberSelected);
let Fish1 = NumberSelected - 82;
let Fish2 = NumberSelected - 67;
let Fish3 = NumberSelected - 52;
let Fish4 = NumberSelected - 51;
return [
Fish1/ NumberSelected,
Fish2/ NumberSelected,
Fish3/ NumberSelected,
Fish4/ NumberSelected
];
}
您想要获得给定数量 X
的鱼 1 到 4 的概率以及一系列范围。鱼的总数是:
鱼 4) 51 或 X(如果 X 较低)
鱼 3) 68-51 o X-51 (如果 X 小于 68)
等等
如果这些 X-N 中的任何一个为负,则表示没有该类型的鱼。
这可以通过以下两个函数中的任何一个来实现:
function fishProb(x) {
let fish4 = Math.max(Math.min(x, 51),0)
let fish3 = Math.max(Math.min(x-51, 68-51),0)
let fish2 = Math.max(Math.min(x-68, 82-68),0)
let fish1 = Math.max(Math.min(x-82, 99-82),0)
return([fish1, fish2, fish3, fish4].map(f => f/x))
}
function fishProb2(x) {
var allFishes = x
var fishType = [51, 68-51, 82-68, 99-82]
var fishes = []
for (const currentFishes of fishType) {
fishes.push( Math.max(Math.min(allFishes, currentFishes), 0) )
allFishes -= currentFishes
}
return(fishes.map(f => f/x).reverse())
}
两者的功能 return 相同。我认为第二个以更简单的方式表达了问题。
如果你有X=70那么你有51条Fish4,剩下的70-51条你有(68-51)条Fish3,剩下的3条是Fish2。批次中没有 Fish1。
//X = 70
[0, 0.02857142857142857, 0.24285714285714285, 0.7285714285714285]
//X = 85
[0.03529411764705882, 0.16470588235294117, 0.2, 0.6]
//X = 20. In this case you only have 20 Fish4 and none of the others.
[0, 0, 0, 1]
我正在尝试获取获得一些鱼的百分比。
X
是这里的唯一数字,它在 0-99 之间,但在我的示例代码中它是 70,用于测试目的。
但目前它returns确实是错误的结果,所以我在这里做错了。
当前输出:
[-0.17142857142857143, 0.04285714285714286, 0.2571428571428571, 0.2714285714285714]
这意味着
- -17% 得到
fish1
, - 4.2% 对于
fish2
、 - 25.7%
fish3
, - 27%
fish4
.
正确的数学公式如下:
如果X号是82+,就会得到1条鱼。 如果 X 数为 67+,则为鱼 2(除非 82+ 等)。 如果 x 数为 52+,则为鱼 3。 如果小于或等于 51,则为鱼 4。
所以理论上,x
为85,获得的几率是3/85
然后我需要当前 X 获得特定鱼的概率。 我在这里做错了什么?
function fishesPercentage(X) {
var NumberSelected = RandomNumber(0,X-1);
NumberSelected = 70;
console.log("RANDOOM NUMBER IS : ",NumberSelected);
let Fish1 = NumberSelected - 82;
let Fish2 = NumberSelected - 67;
let Fish3 = NumberSelected - 52;
let Fish4 = NumberSelected - 51;
return [
Fish1/ NumberSelected,
Fish2/ NumberSelected,
Fish3/ NumberSelected,
Fish4/ NumberSelected
];
}
您想要获得给定数量 X
的鱼 1 到 4 的概率以及一系列范围。鱼的总数是:
鱼 4) 51 或 X(如果 X 较低)
鱼 3) 68-51 o X-51 (如果 X 小于 68)
等等
如果这些 X-N 中的任何一个为负,则表示没有该类型的鱼。
这可以通过以下两个函数中的任何一个来实现:
function fishProb(x) {
let fish4 = Math.max(Math.min(x, 51),0)
let fish3 = Math.max(Math.min(x-51, 68-51),0)
let fish2 = Math.max(Math.min(x-68, 82-68),0)
let fish1 = Math.max(Math.min(x-82, 99-82),0)
return([fish1, fish2, fish3, fish4].map(f => f/x))
}
function fishProb2(x) {
var allFishes = x
var fishType = [51, 68-51, 82-68, 99-82]
var fishes = []
for (const currentFishes of fishType) {
fishes.push( Math.max(Math.min(allFishes, currentFishes), 0) )
allFishes -= currentFishes
}
return(fishes.map(f => f/x).reverse())
}
两者的功能 return 相同。我认为第二个以更简单的方式表达了问题。
如果你有X=70那么你有51条Fish4,剩下的70-51条你有(68-51)条Fish3,剩下的3条是Fish2。批次中没有 Fish1。
//X = 70
[0, 0.02857142857142857, 0.24285714285714285, 0.7285714285714285]
//X = 85
[0.03529411764705882, 0.16470588235294117, 0.2, 0.6]
//X = 20. In this case you only have 20 Fish4 and none of the others.
[0, 0, 0, 1]