LlListRandomize/ja

From Second Life Wiki

メインページ > LlListRandomize > LlListRandomize/ja
Jump to: navigation, search

関数: list llListRandomize( list src, integer stride );

src をランダムにシャッフルしたリストのlist値を返します。

• list src ランダムにシャッフルしたいリスト
• integer stride シャッフルする要素間の間隔

この関数は飛び石リスト (ストライド リスト) を扱えます。

仕様

リストの全要素の位置をシャッフルしたい場合は、stride に 1 を指定してください。これは最も一般的な設定でしょう。

stride がリストの長さの約数でない場合、リスト src が返ります。

概念的には、このアルゴリズムはリストを "リストの長さ ÷ 間隔" 個の塊に切り分けます。そしてそれぞれの塊どうしが互いにシャッフルされます。

list dice = ["2", "4", "1", "6", "3", "5"];
 
default
{
    touch_start(integer num_detected) {
        list shuffled = llListRandomize(dice, 1);
        llOwnerSay(llList2CSV(shuffled));
    }
}


list list01 = ["Cold", "pizza", "in", "the", "early", "morning"];
 
list list_random = llListRandomize(list01, 2);

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 が指定されたので、元のリストで隣り合っていた二個の要素が、常に離れずにいる点に注意してください。

list list_random = llListRandomize(list01, 6);

6 個単位で要素を保持するよう指定し、リストには 6 個しか要素が無いため、list_random はシャッフル前と全く同じ並び順になります。

ノート

(関数内で) 元のリストは変更されず、新しい配列が返される点に留意してください。従って (戻り値を直接処理するのでないならば) 戻り値を変数に収めることが重要です。

関連項目

関数

•  llListSort
•  llFrand

ディープノート

情報源

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

この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。
In other languages