map中获得随机数据

获得随机数据的对应场景是:我是一个增删改查的码畜,接到了一个任务。我面对的数据是故事服务,故事有type类型,每个type比如joke笑话下面还有一堆的笑话元数据。

如果我对数据查找的时候就是一个type对应一个集合。所有type的集合加起来,数据量不大只有10万条左右。第一次我想获得一条故事数据,第二次再次获取数据要保证数据type和故事的元数据不同,达到type和故事元数据随机

type 指向 list的map的集合

//全局存放故事的id集合
static Map<String, List<String>> storyTypeMap = new HashMap<>();

第一步要在map的key随机获得, randomSubType是根据map的key集合的大小生成的随机数

storyTypeMap.get(randomSubType);

下面是整个方法的代码

因为key指向的list,再次根据list集合大小生成随机数,也就是随机下标。

该方法的步骤:

  1. 获得随机key;
  2. 根据随机key获得对应的list;
  3. 根据list.size()随机一个下标index出来。这样就达到了,map中的key和list全部随机。
querySubTypeFlag=false;
//根据type获取对应sbuType集合
List<String> subTypeList = countStory(queryParam.getType());
List<String> idList = new ArrayList<>();
//防止进入死循环,只允许有限次数的操作
int index=0;
do {
    //map的key集合大小生成随机数
    String randomSubType = subTypeList.get((int)(Math.random()* subTypeList.size()));
    //key指向的list,再次根据list集合大小生成随机数,也就是随机下标
    idList = storyTypeMap.get(randomSubType);
    if(null != idList && 0 != idList.size()) {
        randomId =idList.get((int)(Math.random()* idList.size()));
    }
    index++;
} while((idList == null || idList.size() == 0) && index < 50);

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于MapReduce的分布式改进随机森林学生就业数据分类模型研究 随机森林是一种常用的机器学习算法,它通过集合多个决策树的结果来进行分类。然而,传统的随机森林算法在处理大规模数据时会遇到性能瓶颈,因为需要串行处理每个决策树的训练和预测过程。为了解决这个问题,本研究基于MapReduce框架提出了一种分布式改进的随机森林学生就业数据分类模型。 首先,我们将学生就业数据分割成多个子集,并将每个子集分配给不同的计算节点。每个计算节点上通过Map函数将子集输入随机森林模型,进行决策树的训练。这样可以并行处理多个决策树的训练过程,提高了算法的运行效率。 接着,通过Reduce函数将每个计算节点得到的决策树集成为最终的随机森林模型。在此过程,我们采用了改进的随机划分样本方法,即在每个计算节点进行决策树的训练时,引入随机样本划分的策略,增强了模型的随机性。同时,我们引入了投票机制来进行分类预测,通过Reduce函数将每个计算节点对输入数据的预测结果进行统计汇总,获得最终的分类结果。 该分布式改进的随机森林模型在学生就业数据分类任务上的实验结果表明,相比传统的串行随机森林算法,我们的模型具有更高的处理效率和准确性。通过并行处理和样本随机划分等策略,我们能够更好地利用分布式计算资源,提高了模型的训练速度和分类精度。 综上所述,基于MapReduce的分布式改进随机森林学生就业数据分类模型可以有效地处理大规模数据,并提高模型的性能。这对于处理大规模学生就业数据,进行准确的分类分析和预测具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值