现在,它使得数字超过50正数而数字低于50负数。我应该如何更改代码以使任何数字可以是正数还是负数?
public class P1G
{
static void main()
{
int[] a = new int[10];
for(int index = 0; index < 10; index ++)
{
double r = Math.random();
int p = (int) (((100 - 0) + 1) * r + 0); // (-) or (+)
if ( p < 50 )
{
int n = (int) (((100 - 0) + 1) * r + 0);
n = n * -1;
System.out.println(n);
}
else
{
int n = (int) (((100 - 0) + 1) * r + 0);
n = n;
System.out.println(n);
}
}
}
}
答案 0 :(得分:1)
除非我错过了你想要的东西
int n = (int) (Math.random() * 101) - 50;
System.out.println(n);
<强>解释强>
获取0到100范围内的随机int
并减去50,得到范围-50到正50.每Math.random()
Javadoc -
返回带有正号的
double
值,大于或等于0.0且小于1.0。
答案 1 :(得分:0)
你能用这个吗?
new Random().nextInt(50)-100
哦,对不起,犯了一个大错的错误。
new Random().nextInt(100) - 50
答案 2 :(得分:0)
通过执行以下操作,您可以随机[0,101]
进行随机跟踪,而不是随机[-50, 50]
:
int p = (int) (100 * r - 50);