随机输出带权重数组中的值(百度二面算法题目)

这是一个关于算法的博客,讲述了如何在给定一个包含权重的数组时,设计一个随机返回数组中值的算法,使得权重高的元素被返回的概率更高。通过将数组元素的值累加,然后根据生成的随机数范围来决定返回哪个元素。
摘要由CSDN通过智能技术生成
  • 题目:给定一个数组,每个值都是一个权值。随机返回数组中的数,要求权值高的相应的返回的概率高。比如现在数组存储了音乐的打分,要求随机返回数组中一个数的值。(假设数组中的值都是整数)
  • 思路: 以 A:3, B:5, C:2,D:1 四条记录上随机选取一个值输出为例,(是否以权重排序这个无所谓)
    对于
    A 3
    B 5
    C 2
    D 1
    首先,将第n行的数值赋为第n行加第n-1行的,递归执行,如下:
    A 3
    B 8
    C 10
    D 11

可以看出,数组变换后,当产生[1,3]的随机数时,对应输出3,当产生[4,8]的随机数时,对应输出5,当产生[9,10]的随机数时,对应输出2,当产生11时,对应输出1。

代码块

代码块语法遵循标准markdown代码,例如:


import java.util.Random;

/**
 * Created by happy on 17/5/14.
 */
public class 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值