简介
写公司动态业务时,公司大佬没时间,让自己一个实习生先简单实现推荐动态,当自己根据协同过滤获取到动态相似度列表后,随机提取相似度列表中的数据例如每页10行。这时因为相似度一般都是浮点型0~1之间,而且相似度要取相似度较高的值,例如:0.9988… 、0.9998…,越接近1说明相似度越高,越接近0相似度越低,话痨扯远了。
实例
需求:随机获取大于0.9884603532054125的随机数(Double)
坑:可能是基础差,我最开始是这样的(永远都是一个数)
private Random random = new Random(0.9884603532054125);
double aDouble = random.nextDouble();
System.out.println(aDouble);
最后达不到我的需求,换了一下
Double aDouble = Math.random()*(1-0.9884603532054125)+0.9884603532054125;
封装:
/**
* 根据因子生成数
* @param max 最大值
* @param min 最小值
* @return
*/
private static Double makeRandom(double max, double min) {
Double aDouble = (Math.random()*(max-min))+min;
return aDouble;
}
解析 :
实际上 Math.random() 和 Random.nextDouble()概念都是一样的,随机生成0~1浮点型的数,例如,最大值是1,最小值是0.9,取随机数,带公式,
(随机数*(1-0.9))+0.9,如果 随机数等于0.9,就是(0.9*0.1)+0.9,
0.09+0.9=0.99,就这样。
public static double random() {
return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}
Random简单用法
Random简单用法就不多说了,大家都懂了!!!
例如:
Random random = new Random();
//获取100以下的数
System.out.println(random.nextInt(100));
//单精浮点数
System.out.println(random.nextFloat());
总结
心灵鸡汤:真正改变命运的,并不是我们的机遇,而是我们的态度。
喜欢的老表欢迎自己服务器小水管搭的一个博客(轮子)地址:http://121.5.147.69/