算法-统一随机元素链表
Algorithms- uniform random element linked lists
如何从链表中获得统一的随机元素?通过计算列表的长度当你在计数时,生成一个随机元素。如果列表的随机元素%长度等于0,然后选择该元素。
在开始挑选元素之前,首先需要列表的长度,因此它平均需要在列表中迭代1.5次。
第一个是获取列表的长度。然后得到一个[0…1]的随机数乘以列表的长度,四舍五入。这是你必须得到的索引(你必须进行另一次迭代)。
在伪代码中:
int n = list.size() // Returns length of list
int index = (int) (random_value() * n); // random_value returns a value between 0.0 and 1.0
int* node = list.start() // goto start of list
for (int iter = 0; 0 < n; n++)
node = node->next() // Goto next node
return node
相关文章:
- 打印所有链表的元素 (C++)
- 如何实现 Front() 方法以返回模板化双向链表C++的第一个元素?
- 在链链表中手动插入第五个元素
- 将数组的元素添加到链表中
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 如何将元素附加到链表?
- 仅显示链表的最后一个元素
- 从 c++ 中的链表中获取元素
- C++删除链表中的元素
- 我正在尝试计算链表中当前元素的数量
- 为什么将函数的返回类型从结构节点*更改为void后,链表的元素没有显示create_ll和显示?
- 如何从几乎排序的链表中分离放错位置的元素?
- 如何比较链表的元素?
- 链表 - 元素在删除后出现
- C++链表最后一个元素的迭代器?
- 如何找到双向链表的最大元素?
- 使用带有结构结构作为 C++; 元素的单向链表
- 如何检查单向链表的每个 3 个元素,然后删除其中一些元素?
- 将元素添加到 Head 的双链表
- 算法-统一随机元素链表