LlListRandomize/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

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

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

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

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

仕様

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

stride がリストの長さの約数でない場合、リスト src が返ります。言い換えれば、 src.length() % stride は 0 にならなければなりません。

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

サンプル

<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 個の要素を一緒にしておくように指定して、リストの中に 6 個しか要素がないからです。

注意点

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

関連項目

関数

•  llListSort
•  llFrand

特記事項

Search JIRA for related Issues

ソース

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

Signature

function list llListRandomize( list src, integer stride );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。