微信发红包算法
来源:互联网 发布:yum安装hba卡rpm包 编辑:程序博客网 时间:2024/06/08 02:26
今天去搜狐参加实习生笔试,最后有道题就是发红包。
题目要求如下:
1、每个人都要能够领取到红包;
2、每个人领取到的红包金额总和=总金额;
3、每个人领取到的红包金额不等,但也不能差的太离谱,不然就没趣味;
网上搜索答案,方法不一,我认为比较好的算法如下,待补充。
解法一:
先生成 num 个0-1随机数,计算它们的和,然后用每个随机数除以此和再乘以设定的total,就可以了。
弊端:1. 可能生成随机数0,这样就有人领不到红包
2. 分布符合均匀分布。如果能满足正态分布,就更符合题意。
经调试后代码如下:
运行结果:
import java.util.*;public class Test{public static void main(String args[]){randSum(10,10);}private static void randSum(int num, float total) {//random number generatorRandom rn = new Random();//container of random numbersArrayList<Float> randNums = new ArrayList<Float>();//container of final resultsArrayList<Float> finalResult = new ArrayList<Float>();// the sum of generated random numbersfloat genSum = 0;//generate random numbersfor (int i = 0; i < num; i++) {float r0 = rn.nextFloat();genSum += r0;randNums.add(r0);//System.out.println(randNums.get(i));}// calculate final resultsfor (int i = 0; i < randNums.size(); i++) {//finalResult.add( (randNums.get(i)/genSum)*total); float rNum = (randNums.get(i)/genSum)*total; finalResult.add(rNum);}//print resultsCollections.sort(finalResult);float sum = 0;for(float x : finalResult){System.out.println(x);sum += x;}// print final total amount//System.out.println(sum);}}
0.006173989
0.08440706
0.2599706
0.82681423
1.0897439
1.2572217
1.4412992
1.4780049
1.643845
1.9125202
0.08440706
0.2599706
0.82681423
1.0897439
1.2572217
1.4412992
1.4780049
1.643845
1.9125202
0 0
- 微信发红包算法
- 微信红包发红包
- 微信公众平台发红包接口
- 微信公众号发红包
- PHP微信发红包简明教程
- PHP实现微信发红包程序
- 微信给用户发红包
- 微信发红包功能的实现
- 微信发红包 PHP 实现
- 简单发红包算法。
- 微信发红包代码,解决中文乱码问题
- 微信发红包,出现了内部错误。
- 微信发红包UITextField金额输入格式化
- 微信商户发红包和获取用户信息
- 使用微信公众号进行发红包
- 利用微信企业号实现发红包功能
- golang实现微信公众号发红包功能
- 微信公众平台给用户发红包+php
- iOS下拉刷新上拉加载更多EGOTableViewPullRefresh类库
- lintcode:Word Break
- Object_c基础——oc程序与C语言程序开发过程的异同简单认识
- cocos2dx 中的SEL_Callfunc,SEL_CallfuncN,SEL_CallfuncNd的用法
- poj 2376解题报告(详细) 带几组测试数据
- 微信发红包算法
- Cmake的介绍和使用 Cmake实践
- Android Studio 的下载和安装
- 获取表单中选中的文字
- Java 第二次作业:MySQL数据库及Java操作MySQL数据库
- Android 动态设置Activity背景的方法
- 《剑指Offer》学习笔记--面试题56:链表中环的入口结点
- CoreData简单使用流程分析
- 智能手机还能咋创新?看这些厂商怎么做的