Java随机数的生成

Random类

生成一个[0,10)的随机整数
Random random = new Random();
int num1 = random.nextInt(10);

生成一个[0,10]范围的随机整数
[0,11) -> [0,10]

int num2 = random.nextInt(11);

生成一个[1,10]范围的随机整数
[0+1,10+1) -> [1,11) -> [1,10]
int num3 = random.nextInt(10) + 1;

Math.random()
它的作用是生成一个[0,1)的随机小数

生成一个[0,10)的随机小数
double类型的[0,10)
[0,1) -> [0,10)
double a_double = Math.random() * 10;

生成一个[0,10)的随机整数
int num1 = (int)a_double;

生成一个[0,10]范围的随机整数
强转为int时是向下取整 floor()
[0,10+0.5) -> [0,10.5) -> [0,10]

int num2 = (int) (a_double + 0.5);

或一步到位
int num3 = (int) (Math.random() * 10 + 0.5);

生成一个[1,11]范围的随机整数
[0+1.5,10+1.5) -> [1.5,11,5] 向下取整为 -> [1,11]
int num4 = (int) (Math.random() * 10 + 1.5);

测试代码
for (int i = 0; i < 1000; i++) {
int num5 = (int) (Math.random() * 10 + 1.5);
if (num5 == 1) System.out.println(0);
if (num5 == 11) System.out.println(11);
}

posted @   i南栀  阅读(961)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示