LlListRandomize

From Second Life Wiki
Revision as of 23:22, 3 April 2009 by Nanjido Oh (talk | contribs)
Jump to navigation Jump to search

설명

함수: list llListRandomize( list src, integer stride );
197 함수ID
0.0 지연
10.0 에너지

반환되는 값은 무작위로 섞인 src의 순열.

• list src 무작위로 만들고자 하는 목록.
• integer stride 무작위를 하더라도 순서를 유지하고자 하는 인접한 절편의 길이.

명세

이 함수는 절편 목록을 지원한다.

목록의 모든 항목 위치를 무작위로 섞고 싶다면 절편(stride) 길이를 1로 놓을 것. 대부분은 이런 식으로 사용된다.

절편 길이가 목록 길이의 약수가 아니라면, 목록 src가 그대로 반환된다. 다시 말해서, src.length() % stride 는 0이 되어야 한다.

개념적으로, 알고리즘은 src.length()/stride한 절편들을 취해서, 각각의 절편을 다른 절편과 섞게 되는 것이다.

예제

<lsl>list dice = ["2", "4", "1", "6", "3", "5"];

default {

   touch_start(integer num_detected) {
       list shuffled = llListRandomize(dice, 1);
       llOwnerSay(llList2CSV(shuffled));
   }

}</lsl>


<lsl>list list01 = ["Cold", "pizza", "in", "the", "early", "morning"];

list list_random = llListRandomize(list01, 2);</lsl>

list_random은 이를테면 다음과 같이 섞일 수 있을 것이다:

  1. ["Cold", "pizza", "in", "the", "early", "morning"]
  2. ["Cold", "pizza", "early", "morning", "in", "the"]
  3. ["in", "the", "Cold", "pizza", "early", "morning"]
  4. ["in", "the", "early", "morning", "Cold", "pizza"]
  5. ["early", "morning", "Cold", "pizza", "in", "the"]
  6. ["early", "morning", "in", "the", "Cold", "pizza"]

원래 목록에서 두 개의 인접한 항목들은 항상 붙어 있음을 눈여겨보라. 여기서 절편길이(stride)가 2로 설정되었다.

<lsl>list list_random = llListRandomize(list01, 6);</lsl>

이 예제에서 목록 list_random은 그냥 본래의 목록이다. 왜냐하면 절편 길이가 본래의 길이 그대로 6으로 지정되어 잘라 나누어 섞거나 할 것이 없기 때문이다.

기록

본래의 목록은 변하지 않으며 대신 섞여진 새로운 목록이 생성되는 것에 유의할 것. 결과를 바로 다루지 않는다면 변수에 담는 것이 중요하다.

함께 보기

함수

•  llListSort
•  llFrand

상세 기록

출처

lsa_randomize(): 'linden\indra\lscript\lscript_library\lscript_alloc.cpp'

이 글이 유용하지 않으세요? LSL Wiki의 관련항목이 도움을 줄 수 있을 지도 모릅니다.