2014-11-17 3 views
1

필자가 프로그래밍하지 않은 Perl의 함수를 Java로 변환하려고합니다. 이 줄을 제외하고 코드를 이해합니다.간단한 펄 구문 설명

srand(time() ^($$ + ($$ <<15))) ; 

나는부터 srand 자바에서 Random.nextInt()처럼 생각하지만 난 $$ 펄에서 $$를 의미 + 나 $$ < < 15. 확신이 아마 간단 무슨 단서가 없다 펄 구문하지만 간단한 설명을 찾을 수 없습니다. 맥락에서

라인

#!/usr/bin/perl 
srand(time() ^($$ + ($$ <<15))) ; 
for ($x=0;$x<10;$x++) { 
print rand() . "\n"; 
} 
+0

$$은 (는) 귀하의 통역사입니다. – Arkadiy

+0

@Arkadly의 답변에 추가하십시오. http://perldoc.perl.org/perlvar.html –

+0

이것은 정말 오래된 코드입니다. 최신 버전의 Perl에서는'srand()'를 호출 할 필요가 없습니다. –

답변

4

srand 씨앗 난수 생성기. 이는 Java의 new Random(seed)과 유사합니다. rand()Random.nextInt()과 더 유사합니다. rand()이 처음 사용될 때 암시 적으로 (그리고 아마도 더 좋은 씨앗과 함께) 호출 될 것이기 때문에 실제로 이렇게 할 이유가 없습니다. 내부의 것들은 기본적으로 PID를 사용하여 임의의 틱 데이터를 얻으려고합니다.

+1

아주 오래된 코드 일 수도 있고 매우 오래된 코드 일 수도 있습니다. 펄은 암시 적으로''srand''를 약 96 년까지 괜찮은 가치로 만들지 않았습니다. – hobbs

+0

자바 내부에있는 것들을 모방 할 수 있습니까? –

+0

얼마나 정확하게 당신이 그것을 모방하고 싶은지에 달려 있습니다. Java에서 새로운 난수 생성기를 구현하여 각 PID에 대해 동일한 난수를 생성하지 않으려 고합니다. – AKHolland