2017-02-10 8 views
0
for {set i 0} {$i < $num_nodes} {incr i} { 
    for {set j 0} {$j < 10} {incr j} { 
    $ns at [expr 7.2+[expr rand()*3.0]] "$n($i) send_message 10 1 {[expr round([expr rand()*100000])]:[expr round([expr rand()*$numdata1])]:1:-1:-1} $MESSAGE_PORT" 
    set generated1 [expr $generated1 + 1] 
    } 
} 

tcl ns2에서 요청 패킷 생성을위한 코드를 작성하고 있습니다. 인터넷에서이 줄을 발견했지만이 줄을 이해할 수 없습니다.NS2에서 요청 패킷 생성 코드 Tcl/Tk

$ns at [expr 7.2+[expr rand()*3.0]] "$n($i) send_message 10 1 {[expr round([expr rand()*100000])]:[expr round([expr rand()*$numdata1])]:1:-1:-1} $MESSAGE_PORT" 

위의 줄 뒤에있는 논리는 무엇입니까?

답변

0

우선 중첩 된 숫자는 expr입니다.

$ns at [expr {7.2+rand()*3.0}] "$n($i) send_message 10 1 {[expr {round(rand()*100000)}]:[expr {round(rand()*$numdata1)}]:1:-1:-1} $MESSAGE_PORT" 

그 단어 별을 보면 : 최대 것을 청소

  • $ns
  • at
  • [expr {7.2+rand()*3.0}]
    • 7.2 및 10.2
    • 사이의 임의 float 값
    ,853,210
  • "$n($i) send_message 10 1 {[expr {round(rand()*100000)}]:[expr {round(rand()*$numdata1)}]:1:-1:-1} $MESSAGE_PORT"
    • 변수 및 명령 대체의 적용을받습니다 인용 된 문자열이
    • 더보고합니다 (Tcl(n) 매뉴얼 페이지를 참조하십시오), 우리는이 :
      • $n($i) < == 연관 배열의 가치를 키 $i
      • [expr {round(rand()*100000)}] < == 0과 100,000 사이의 임의의 정수
      • 티클이 모든 것을 대체 한 후 [expr {round(rand()*$numdata1)}] < == 0 $numdata1

사이의 임의의 정수, 우리는

nsValue at 9.99934 "nValue send_message 10 1 {42:1234:1:-1:1} 8080" 
뭔가를해야 할 수도 있습니다