자바에서 임의 번호 between 0 and 2^32-1
을 생성하는 방법은 무엇입니까? 당신이해야 당신이 0 (32-1)^2에서 원하는 경우자바에서 0과 2 사이의 임의의 숫자를 생성하는 방법^32-1
-1161730240
-1387884711
-3808952878
-3048911995
-2135413666
내가,
자바에서 임의 번호 between 0 and 2^32-1
을 생성하는 방법은 무엇입니까? 당신이해야 당신이 0 (32-1)^2에서 원하는 경우자바에서 0과 2 사이의 임의의 숫자를 생성하는 방법^32-1
-1161730240
-1387884711
-3808952878
-3048911995
-2135413666
내가,
음수를 피하기 위해 오프셋을 추가하려고하면 문제가 생깁니다.
(long)(1<<31)
은 그것을 가장 부정적인 INT하게 31 비트 시프트 int로 1 해석 한 다음 그 긴 (여전히 마이너스)로 주조.
당신은 당신의 오프셋으로
(1L << 31)
를 원한다.
정말 고마워요! – jianzaixian
.. 왜 모르는
long[]num = new long[size + 1];
Random random = new Random();
for (int i = 1; i < size + 1; i++) {
num[i] = (long)random.nextInt()+(long)(1<<31);
System.out.println(num[i]);
}
을하지만 인쇄 : 나는이 연결 쓰기 Random.nextInt()
대신 Random.nextLong() & 0xffffffffL
을 사용하십시오.
Java는 unsigned
유형을 지원하지 않으므로, int
은 원하는 범위에서 값을 사용할 수 없습니다. 이 문제를 해결하려면 long
(64 비트)을 사용해야하며 필요한 범위의 값을 사용할 수 있습니다.
'random.nextLong() & 0xffffffffL'은 임의의'long'을 어떻게 얻습니까? – CodyBugstein
가능한 복제본 [java.math.BigInteger를 사용하지 않고 Java의 매우 큰 숫자] (http://stackoverflow.com/questions/5318068/very-large-numbers-in-java-without-using-java-math) -biginteger) –