假设我有一个很大的二维值数组,其范围在[0,1]之间,其中0表示“不可能”而1表示“极有可能”。
根据上述概率,如何选择这个数组中的一组随机点?
假设我有一个很大的二维值数组,其范围在[0,1]之间,其中0表示“不可能”而1表示“极有可能”。
根据上述概率,如何选择这个数组中的一组随机点?
s
0 <= u < s
t
t >= u
时,立即选择你当前正在查看的项目(刚刚添加其权重的项目)。每次选择后,从s
中减去所选项目的权重(如果您的权重是浮点数并且稳定性是一个问题,则您可能更喜欢偶尔从头开始重新计算它)。
重复从2开始,但在第3步跳过已经被选择过的项目。
代码:
count = 0
maxPointsInSet = 100
foreach(point in array){
if(randomWithChacnce(point.value))) {
addToSet(point)
count++
}
if(count == maxPointsInSet)
break;
}
function randomWithChacnce(int num){
random = a randomized number between 0 to 1 // or random from 1 to 100 num*100
if(num >= random)
return true;
return false
}
如果您需要以任何特定语言,请告诉我