« 失敗~ | トップページ | 悲願 »

2010年6月 8日 (火)

MELプロシージャーをひとつ

「メールの宛先欄に”様”がついていないのは失礼か?」という記事をネットのニュースで読んだんですが、こんなので悩んでいる人がいるんですね。

記事のリンク→ メールの宛先欄に“様”がついていないのは失礼か?

そもそも宛先欄に人の名前なんて書く必要ないんじゃないですか? メールアドレスだけ書いて送信すればいいじゃないかと思うんですけど。まさか名前が書いてないとメールが届かないなんて思ってる人はいないですよね? 何だかアホらしいです。

たまには人の役に立つことでも書いたほうがいいですよね。なので今日はMELの簡単で汎用的なプロシージャーをひとつ。この「chooseOneFrom」は文字列の配列1つを引数にとり、その配列に格納されている複数の文字列の中からひとつを選んで返します。

proc string chooseOneFrom(string $str[]) {

   int $size = `size $str`;

   int $n = `rand 0 $size`;

   return $str[$n];

}

使い方ですが、

string $a[] = {"apple", "orange", "banana", "grape"};
chooseOneFrom $a;

みなたいな感じで使用します。この場合、配列$aに格納されている"apple"、"orange"、"banana"、"grape"のいずれかひとつが返されます。どれが返されるかは完全にランダムで決まりますので予測はできません。このプロシージャーのしくみを説明します。2行目でMELの"size"コマンドを使って、配列に格納されている要素の数 $size を取得します。次に3行目で"rand"コマンドを使い、0から $size に収まる1個のランダムな整数 $n を発生させます(正確には"rand"コマンドで発生する値は小数ですが、整数型の変数$nに格納される時点で整数に丸められます)。そして配列の $n番目の要素を返すという仕組みです。

このプロシージャーは、例えばあらかじめ10種類作っておいた石ころを、広い平原に適当にばら撒いて敷き詰めるようなケースで役立ちます。または、数種類の人間を作っておいて、それをランダムに増やして街中に配置するといったことにも使えます。

本日の写真。八つ頭の葉。奥でボケているのはガジュマル。

060801

シグマの魚眼レンズで。浜辺のタンポポ。

060802

ハマダイコン。花びらの模様がすごいですね。ボールペンか何かで描いたみたいです。

060803

スーパーへ買い物に行く途中で森戸海岸に寄ってみました。海開きに向けて、海の家の設営がぼちぼち始まっています。遠くに見えるのは鎌倉の稲村ヶ崎。

060804

|

« 失敗~ | トップページ | 悲願 »

CGのこと」カテゴリの記事