过滤数组,然后根据权重随机选择一个元素,无需分配

我想知道是否有可能,比如说我有一个带有以下数据的结构数组:

struct Data {
  Prop = 25
  Weight = 12
}

现在假设我想从数组中找到一个随机元素,并遵循以下规则:

  1. Prop值过滤数组。
  2. 然后使用Weight作为偏差来随机选择一个元素。

创建时间列表然后从中随机选择一个元素很简单。

但是我们最终只希望从数组中获得1个元素,是否有一些巧妙的技巧可以避免堆分配?

onion_chan 回答:过滤数组,然后根据权重随机选择一个元素,无需分配

不确定如何从集合中选择偏倚的随机元素,但是如果您的问题只是不创建时间列表,则可以轻松地使用LINQ来完成此任务:

IEnumerable<Data> myData; // assuming your data is in here
var randomElement = myData.Where(d => d.Prop > 10) //or some other filter
.Single(d => {/*put your code to select the biased element here*/})
本文链接:https://www.f2er.com/3138784.html

大家都在问