c语言从集合中随机选取一个值,从集合中挑选一个随机元素

这个博客介绍了如何在C语言中实现一个RandomSet类,该类结合了ArrayList和HashMap来实现随机访问和高效地从集合中随机选择元素。通过将元素映射到它们的索引,可以方便地进行添加、删除和随机获取操作,确保了随机选择的均匀分布。
摘要由CSDN通过智能技术生成

使用a ArrayList和a HashMap:[element - > index] 快速解决Java问题。

动机:我需要一组具有RandomAccess属性的项目,尤其是从集合中选择一个随机项目(参见pollRandom方法)。二叉树中的随机导航不准确:树不是完美平衡的,这不会导致均匀分布。public class RandomSet extends AbstractSet {

List dta = new ArrayList();

Map idx = new HashMap();

public RandomSet() {

}

public RandomSet(Collection items) {

for (E item : items) {

idx.put(item, dta.size());

dta.add(item);

}

}

@Override

public boolean add(E item) {

if (idx.containsKey(item)) {

return false;

}

idx.put(item, dta.size());

dta.add(item);

return true;

}

/**

* Override element at position id with last element.

* @param id

*/

public E removeAt(int id) { </

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值