gpt4 book ai didi

javascript - javascript/jquery 波动的随机百分比

转载 作者:行者123 更新时间:2023-11-29 21:55:24 25 4
gpt4 key购买 nike

所以我试图根据百分比选择一个随机数。 0-5

0 - 25% (25/100)
1 - 25% (25/100)
2 - 20% (20/100)
3 - 15% (15/100)
4 - 10% (10/100)
5 - 5% (5/100)

但是,有时需要从挑选中省略一个或多个这些值。所以你可能会遇到这样的事情

0 - 25% (25/65)
2 - 20% (20/65)
3 - 15% (15/65)
5 - 5% (5/65)

这意味着百分比必须与那里的其他数字成比例。

我想我可以使用一个随机函数来做这样的事情

var1 = Math.floor((Math.random() * 100) + 1);

//0 - 25% random(1-25)
//1 - 25% random(26-50)
//2 - 20% random(51-70)
//3 - 15% random(71-85)
//4 - 10% random(86-95)
//5 - 5% random(96-100)

if(var1 <= 25){
var2 = 0;
}else if(var1 <= 50){
var2 = 1;
}else if(var1 <= 70){
var2 = 2;
}else if(var1 <= 85){
var2 = 3;
}else if(var1 <= 95){
var2 = 4;
}else if(var1 <= 100){
var2 = 5;
}else{
// error
}

但是当省略一个或多个变量 (0-5) 时,我遇到了问题。可以设置一堆 if/else 语句,但这不是一个非常实用的解决方案。

有人知道我可以用更好的方法吗?

此外,如果您不确定我的问题是什么,请直言。我将尝试更具体、更明确地表达我的意图。

最佳答案

我想,这正是您想要的。 Example

function RangeArray(diffs) {
this.diffs = diffs;
}

// Omit range by index
RangeArray.prototype.omitAt = function(index) {
var arr = this.diffs;

// move value to the next item in array
arr[index + 1] += arr[index];
arr[index] = 0;
}

// Find index of range for value
RangeArray.prototype.indexOf = function(value) {
var arr = this.diffs;
var sum = 0;

for (var index = 0; index < arr.length; ++index) {
sum += arr[index];
if (value < sum) {
return index;
}
}

return -1;
}

// ------- tests ----------

// array of ranges created using your percentage steps
var ranges = new RangeArray([25,25,20,15,10,5]);

// your random values
var values = [1, 26, 51, 70, 86, 99];

// test resutls: indexes of ranges for values
var indexes;

console.log('ranges: 1-25, 26-50, 51-70, 71-85, 86-95, 96-100');
console.log('random values: ' + values.join(', '));

// for your random values indexOf should return 0, 1, 2, 3, 4, 5 accordingly
indexes = values.map(function(x) { return ranges.indexOf(x); });
console.log('test 1 results: ' + indexes.join(', '));

// omit range at index 1 and 4
ranges.omitAt(1);
ranges.omitAt(4);

// for your random values indexOf should return 0, 2, 2, 3, 5, 5 accordingly
indexes = values.map(function(x) { return ranges.indexOf(x); });
console.log('test 2 results: ' + indexes.join(', '));

关于javascript - javascript/jquery 波动的随机百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26679407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com