Created on | Updated on

Houdini でプログラミング:乱数ジェネレータ

概要

mceclip0.png

Houdini での制作は基本的にノードベースであり、プログラミングを必要としません。
しかし Houdini がサポートする PythonやWrangle などの言語を使うことで、これらのノードを制御し、さらに柔軟な表現が可能になります。

mceclip14.png

本記事では、Wrangle を用いて乱数を生成する関数を紹介します。

乱数ジェネレータ

rand()

mceclip1.pngmceclip2.png
rand() は引数に取った一次元から四次元までのシード値をもとに乱数を生成します。生成される値は同じシード値なら同じ値になり、その値は 0-1 の間で収まります。

mceclip3.png

単純な乱数生成に使われるほか、同じシード値で同じ値を生成することを使ってプリミティブそのものをランダムなポイントに移動させることもできます。

random()

mceclip5.pngmceclip0.png
random() は一次元から四次元空間内の位置に基づいて乱数を生成します。

上の rand() と同様に同じ引数の場合同じ乱数を生成します。

nrandom()

mceclip1.pngmceclip2.png

非決定的乱数ジェネレータとして、0-1の範囲の乱数またはランダムな単位ベクトルを返します。

rand() や random() はシード値によって同じシーケンスの乱数を生成できますが、nrandom() はシード値を必要としないため、関数の実行のたびに異なる乱数を生成することができます。

mceclip3.pngmceclip4.png
シード値こそ必要ではありませんが、オプションで文字列を使うことで乱数生成のメソッドを指定することもできます。

random_fhash(), random_ihash(), random_shash()

mceclip10.pngmceclip9.png
random_fhash() と random_ihash() はそれぞれ浮動小数点と整数から整数のハッシュ値を生成します。

random_shash() は文字列から整数のハッシュ値を生成します。
注意点として、異なる2つの文字列が同じ値のハッシュ値を生成することがあります。また、指定した文字列によっては戻り値が非常に大きな値になることがあります。そのため、この関数からの戻り値を乗算したりするとオーバーフローが発生する可能性があります。

random_poisson()

mceclip11.pngmceclip12.png
random_poisson() ではポアソン分布をもとに乱数を生成します。第一引数でシード値を与え、第二引数で分布平均を与えます。シード値が存在するため、同じ平均でも異なる数値を生成します。

可変で第三・第四引数に int 型で最小値と最大値を指定すると、その範囲内で乱数が生成されます。

問題が解決しない場合は、Born Digital サポートまでお問い合わせ下さい。

※ 問い合わせ対応はBorn Digitalより製品をご購入頂きましたお客様のみのサービスとなります。ご了承下さい。
サポート問い合わせ