자바에서 약간의 포식자 - 먹이 시뮬레이션을 작성했습니다. 규칙이 사용하는 기술 매우 복잡하고 혼란 시스템에 끝날 경우에도 간단하다 : 기본 데이터 유형 Java가 결정적이지 않습니까?
- 를 arithmetics과 결정은
- 동시성은
- 시스템과를 초기화 할 때 그래서 내가 생각
현재 시간 또는 날짜없이 사용이 발생하지 동일한 결과를 출력해야하는 동일한 매개 변수가 있지만 그 이유는 궁금합니다.
내 생각에 : 내 응용 프로그램은 Random
을 사용합니다. 그러나이 테스트에서는 모든 값을 주어진 값으로 초기화하므로 이해할 때마다 동일한 순서로 동일한 출력을 실행해야합니다.
나는 Set
을 반복하고 있는데, Set
이 반복되는 순서가 정의되어 있지 않음을 알고 있습니다. 그러나 같은 값으로 같은 순서로 채워지는 Set
이 여러 번 실행될 때마다 다르게 동작해야하는 이유는 없습니다. 그거야?
나는 많은 float
을 사용하고 있습니다. 1 + 1 = 1.9999999999725 인 데이터 유형은 항상 저에게 의심 스럽지만, 저의 행동이 저에게 이상 할지라도 항상 이상해야합니다. 그렇지 않니?
가비지 수집은 결정적이지 않지만, 소멸자에 의존하지 않는 한 안전해야합니다.
위에서 언급했듯이 실제 사용 시간에 따라 동시성과 데이터 유형이 없습니다.
간단한 예에서는 동작을 재현 할 수 없습니다. 그러나 제 코드를 살펴보면 예측할 수없는 것을 볼 수 없습니다. 그래서 틀린 위의 내 가정은 무엇입니까? 내가 누락 될 수있는 아이디어가 있습니까?
은 여기 내 가정을 확인하기 위해 테스트 : 그것은 나를 위해 242455.25 항상 결과
public static void main(String[] args) {
Random r = new Random(1);
Set<Float> s = new HashSet<Float>();
for (int i = 0; i < 1000000; i++) {
s.add(r.nextFloat());
}
float ret = 1;
int cnt = 0;
for (Float f : s) {
float multiply = 0.3f;
if (cnt++ % 2 == 0) {
multiply = 0.7f;
}
float f2 = (f * multiply);
ret += f2;
}
System.out.println(ret);
}
.
시간 기능? – Mysticial
임의의 데이터를 초기화한다고 말하면 시드를 사용한다는 의미입니까? – tjameson
재미있을 것 같습니다. 코드를 살펴 보시겠습니까? – kol