问题描述
- 我想问关于java随机数的问题,这两个随机获取哪个好?
-
第一个:
public static void SuiJiZiFuChuan(int x, int y)
{
for (int j = 0; j < y; j++)
{
for (int i = 0; i < x; i++)
{
int a = (int) (100 * Math.random() + 100 * Math.random());
//区别在这里,那个好
while (true)
{
if (a > 96 & a < 123)
break;
else
a = (int) (100 * Math.random() + 100 * Math.random());
}
System.out.print((char) a);
}
System.out.println();
}第二个:
public static void SuiJiZiFuChuan(int x, int y)
{
for (int j = 0; j < y; j++)
{
for (int i = 0; i < x; i++)
{
int a = (int) (123 * Math.random() );//区别在这里
while (true)
{
if (a > 96 & a < 123)
break;
else
a = (int) (123 * Math.random());
}
System.out.print((char) a);
}
System.out.println();
}
}这两个都是获取随机小字母,哪一个效益好
解决方案
这个你可以自己测试一下,让他们重复生成一万次,看那个效率更高
解决方案二:
96+26*Math.random不要浪费时间来做判断,while去掉
解决方案三:
个人感觉第二个好一些。可以测试下哪个产生符合条件的随机数时所执行的循环次数少。
解决方案四:
一般用的话都差不多吧
解决方案五:
不懂你为什么要那样生成随机数,直接将随机数生成到[0,26)不是更高吗?