我应该更改什么来使任何随机生成的数字为正数或负数?

时间:2014-09-11 02:29:46

标签: java

现在,它使得数字超过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);
            }
        }
    }
}

3 个答案:

答案 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);