项目中需要实现“随机查找3种不同类型的好友各1个,并且不能重复,如果某种类型的好友没有的话,用另一种类型的好友填充。哪种填充类型随便。
大家有什么比较高效点的算法。
大家有什么比较高效点的算法。
解决方案 »
- maven工程导入eclipse问题
- mybatis急用
- org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method sayHello
- javaweb框架选择
- SCJP听说要取消了 是真的吗
- not suitable driver 我用的mysql数据库
- axis java客户端调用.net的webservice无法识别请求元素
- hql 组合查询问题
- spring + hibernate + postgresql操作blob问题
- 请教关于在JB7.0_WLS6.1下编译EJB(SessionBean)的问题
- 【疯了】 ssh2 OpenSessionInViewFilter 没用
- UPDATE D SET a = ? WHERE ID = ?
x[i+1]=A*x[i]%M
简要说明一下常数A和M,注意,所有产生的数都小于M,还有就是必须给定一个初始值x[0]来产生此序列,
x[0]就是这个随机数生成器的种子。A和M需要精心挑选,M必须为素数,否则会产生0,但是这种得出的结果是周期性的,如M=11,A=7种子x[0]=1,则序列为
7,5,2,3,10,4,6,9,8,1,7,5,2,
序列从M-1开始周期循环,周期T=M-1,因此你要让周期大,就必须选个大的M
比如你要实现产生0到1的随机数,可以设M为足够大,如1000000000,然后把得到的随机数再除以M即1000000000,得到的就是0到1的随机数,M越大,随机的分布就越均衡,
实际上M一般都取到足够大的,一般取M为2的31次方减一,即2147483647,这样产生的随机序列才均衡
你把这个算法封装成一个类
随机找出1个同城的,1个同游的,1个同校的。
要求不能重复,不能为已经是好友,某种类型的没有的话由其他类型补充。
好比同城的没有的话,就用2个同游+1个同校,如果同校再没有的话,就全用同游的补充