c语言从集合中随机选取一个值,从集合中挑选一个随机元素
使用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) {
if (id >= dta.size()) {
return null;
}
E res = dta.get(id);
idx.remove(res);
E last = dta.remove(dta.size() - 1);
// skip filling the hole if last is removed
if (id
idx.put(last, id);
dta.set(id, last);
}
return res;
}
@Override
public boolean remove(Object item) {
@SuppressWarnings(value = "element-type-mismatch")
Integer id = idx.get(item);
if (id == null) {
return false;
}
removeAt(id);
return true;
}
public E get(int i) {
return dta.get(i);
}
public E pollRandom(Random rnd) {
if (dta.isEmpty()) {
return null;
}
int id = rnd.nextInt(dta.size());
return removeAt(id);
}
@Override
public int size() {
return dta.size();
}
@Override
public Iterator iterator() {
return dta.iterator();
}}
c语言从集合中随机选取一个值,从集合中挑选一个随机元素相关推荐
- html 表单内容怎么获取不到,jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办?...
jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办? 再做一个前台的ajax方法 查网上用formdate方法上传.可是进了接口之后一直在控制台获取不到for ...
- mysql 替换最后一个字符_怎么使用mysql语句替换某一个值的内容的最后一个指定的字符...
如何使用mysql语句替换某一个值的内容的最后一个指定的字符 回答前请先看这个帖子http://bbs.csdn.net/topics/390705363?page=1#post-396787221 ...
- java中random方法取值范围_Java中的Random()函数
今天在做Java练习的时候注意到了Java里面的一个随机函数--Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结: Java中存在 ...
- 根据list中某个字段的值排序_MySql中常用函数
一.group_concat group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) group_conc ...
- php中颜色的索引值,计算PHP中两种颜色之间的平均颜色,使用索引号作为参考值...
我们假设为了讨论的目的,每个颜色都有一个"值".那么,你想要的就足够简单: $index = 0.2; $val1 = get_value_of_color($color1); $ ...
- Js读取Cookie中指定字段的值,Js中读取某个Cookie,Js中根据Cookie的key得到对应的value,Js正则表达式匹配指定的Cookie
Js中想要读取Cookie中指定字段的值,可以遍历Cookie根据指定Key提取Cookie,或者使用正则表达式匹配Cookie,代码如下: /*** @description: 遍历cookie得到 ...
- python 从字符串中随机选取4个字符_我需要一个Python函数,当给定字符的期望概率时,它将输出4个不同字符的随机字符串...
对于四封信,我脑海中闪过的是:from random import random def randABCD(n, pA, pB, pC, pD): # assumes pA + pB + pC + p ...
- java取出list的最后一个值?从Java中的ArrayList获取第一个和最后一个元素?
ArrayList类的get()方法接受表示索引值的整数,并在指定索引处返回当前ArrayList对象的元素. 因此,如果将0传递给此方法,则可以获取当前ArrayList的第一个元素: 如果传递li ...
- java中random方法取值范围_java中最值的求法,你可能忽略了这种方法了!
对一批数据进行排序,然后找出其中的最大值或最小值,这是基本的数据结构知识.在Java中我们可以通过编写算法的方式,也可以通过数组先排序再取值的方式来实现.下面以求最大值为例,解释一下多种算法. 自行实 ...
最新文章
- 【最小割】HDU 3987 Harry Potter and the Forbidden Forest
- 人人都是 DBA(III)SQL Server 调度器
- 一个程序员的职业规划
- Linux内核的时钟中断
- 2进制、8进制、10进制、16进制...各种进制间的轻松转换(c#)
- 苹果正研发类似亚马逊Echo设备 Sir更加智能化
- Intellij IDEA 14 安装之后
- Qt-Qt Creator的下载、安装与配置(Windows)
- 千亿级数量下日志分析系统的技术架构选型
- C++字符串与C字符串的相互转换问题
- 益阳计算机应用专业推荐一下,益阳职业技术学院10大好专业推荐
- c4d python技巧_还在Bug不断?不妨试试Python中的这2个装__技巧
- SQL Server数据库连接工具SSMS18.2的安装与配置
- Java设计模式之Adapter模式
- 四、Oracle 视图
- c语言台阶,关于C语言跳台阶问题的解决方法
- 开通微信小店显示:系统繁忙,请稍后再试怎么回事?如何解决?
- 中信建投计算机行业周报
- 推荐 8 个高质量的公众号
- python绘制半对数坐标