« C4D ThinkingParticles PAgeノードの簡単なテスト | トップページ | C4D ThinkingParticles 簡単なスプラインエミッタを作ってみる。 »

C4D XPresso[ランダム]ノードが出力する実数値

0.0~1.0までのランダム値を大量に利用したいのですが…

そんなときは「ランダム」ノードを使いますね…

試しに「ランダム」ノードで取得した数値は20×20の狭い範囲です。
記憶の片隅にでも留めて置いてください。
取得は、C4D R11.5Demoです。
バージョンによっては数値が違うようです。実際R9.5とR11.5Demoでは違いました。

C4D R11.5Demo XPresso ランダムノード 実数絶対値出力の一部

横にシード、縦に時間(フレーム)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 0.151 0.151 0.151 0.151 0.151 0.151 0.151 0.151 0.151 0.151 0.151 0.151 0.151 0.151 0.152 0.152 0.152 0.152 0.152 0.152
1 0.368 0.368 0.368 0.368 0.369 0.369 0.369 0.369 0.369 0.369 0.369 0.369 0.369 0.369 0.369 0.369 0.369 0.370 0.370 0.370
2 0.737 0.737 0.737 0.737 0.738 0.738 0.738 0.738 0.738 0.738 0.739 0.739 0.739 0.739 0.739 0.739 0.739 0.740 0.740 0.740
3 0.106 0.106 0.106 0.106 0.107 0.107 0.107 0.107 0.108 0.108 0.108 0.108 0.108 0.109 0.109 0.109 0.109 0.110 0.110 0.110
4 0.474 0.475 0.475 0.475 0.476 0.476 0.476 0.477 0.477 0.477 0.477 0.478 0.478 0.478 0.479 0.479 0.479 0.480 0.480 0.480
5 0.843 0.843 0.844 0.844 0.845 0.845 0.845 0.846 0.846 0.847 0.847 0.847 0.848 0.848 0.849 0.849 0.849 0.850 0.850 0.850
6 0.212 0.212 0.213 0.213 0.214 0.214 0.215 0.215 0.215 0.216 0.216 0.217 0.217 0.218 0.218 0.219 0.219 0.220 0.220 0.221
7 0.580 0.581 0.582 0.582 0.583 0.583 0.584 0.584 0.585 0.585 0.586 0.586 0.587 0.588 0.588 0.589 0.589 0.590 0.590 0.591
8 0.949 0.950 0.950 0.951 0.952 0.952 0.953 0.954 0.954 0.955 0.955 0.956 0.957 0.957 0.958 0.959 0.959 0.960 0.960 0.961
9 0.318 0.319 0.319 0.320 0.321 0.321 0.322 0.323 0.323 0.324 0.325 0.326 0.326 0.327 0.328 0.328 0.329 0.330 0.331 0.331
10 0.687 0.687 0.688 0.689 0.690 0.690 0.691 0.692 0.693 0.694 0.694 0.695 0.696 0.697 0.697 0.698 0.699 0.700 0.701 0.701
11 0.055 0.056 0.057 0.058 0.059 0.060 0.060 0.061 0.062 0.063 0.064 0.065 0.066 0.066 0.067 0.068 0.069 0.070 0.071 0.072
12 0.424 0.425 0.426 0.427 0.428 0.429 0.430 0.430 0.431 0.432 0.433 0.434 0.435 0.436 0.437 0.438 0.439 0.440 0.441 0.442
13 0.793 0.794 0.795 0.796 0.797 0.798 0.799 0.800 0.801 0.802 0.803 0.804 0.805 0.806 0.807 0.808 0.809 0.810 0.811 0.812
14 0.161 0.162 0.164 0.165 0.166 0.167 0.168 0.169 0.170 0.171 0.172 0.173 0.174 0.176 0.177 0.178 0.179 0.180 0.181 0.182
15 0.530 0.531 0.532 0.534 0.535 0.536 0.537 0.538 0.539 0.541 0.542 0.543 0.544 0.545 0.546 0.548 0.549 0.550 0.551 0.552
16 0.899 0.900 0.901 0.902 0.904 0.905 0.906 0.907 0.909 0.910 0.911 0.912 0.914 0.915 0.916 0.917 0.919 0.920 0.921 0.922
17 0.267 0.269 0.270 0.271 0.273 0.274 0.275 0.277 0.278 0.279 0.281 0.282 0.283 0.285 0.286 0.287 0.289 0.290 0.291 0.293
18 0.636 0.637 0.639 0.640 0.642 0.643 0.645 0.646 0.647 0.649 0.650 0.652 0.653 0.654 0.656 0.657 0.659 0.660 0.661 0.663
19 0.005 0.006 0.008 0.009 0.011 0.012 0.014 0.015 0.017 0.018 0.020 0.021 0.023 0.024 0.026 0.027 0.029 0.030 0.032 0.033

この表を横に見ると、似たような数値が並び変化があまりありません。
シード値を変化させても、取得できる数値にそんなに差が無いと言う事です。
縦(時間)には変化がありますが…

通常、プログラミング等ではシード値を設定しランダム値を求める関数を呼び出した順に求める事ができます。
ま、シード1の15番目からと言う指定はできませんが、時間に固定される事はありません。

「ランダム」ノードの場合は、時間に固定され、フレーム中でランダム値を取得するには、シードを変化させるしかありません。

では、「繰り返し」ノードなどを絡め、順番に処理をする時にランダム値を求めるには、どのようにしたら良いのでしょうか…?

Random_01_2

上の最終ノードは「結果」ノードですが、通常だと何らかの処理が繋がるでしょう…

この結果は、上の表の様に似たような数値が100個吐き出される事でしょう…

変化が少ないとはいえ少しは変化しているのですから、シードを連番ではなく飛び飛びの数値だったらどうでしょう…

Random_02

繰り返しの連番を2000倍しました。
結果は以下の通りです。
面倒だったので15×15です。
上と同じく、横にシード、縦に時間です。

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 0.1516 0.2159 0.2802 0.3445 0.4089 0.4732 0.5375 0.6018 0.6662 0.7305 0.7948 0.8591 0.9235 0.9878 0.0521
1 0.3687 0.5253 0.6818 0.8383 0.9948 0.1513 0.3079 0.4644 0.6209 0.7774 0.9340 0.0905 0.2470 0.4036 0.5601
2 0.7374 0.0505 0.3635 0.6765 0.9896 0.3027 0.6157 0.9288 0.2418 0.5549 0.8679 0.1810 0.4940 0.8071 0.1201
3 0.1061 0.5757 0.0453 0.5148 0.9844 0.4540 0.9236 0.3931 0.8627 0.3323 0.8019 0.2714 0.7410 0.2106 0.6802
4 0.4748 0.1009 0.7270 0.3531 0.9792 0.6053 0.2314 0.8575 0.4836 0.1097 0.7358 0.3619 0.9880 0.6141 0.2402
5 0.8435 0.6261 0.4087 0.1914 0.9740 0.7566 0.5393 0.3219 0.1045 0.8871 0.6698 0.4524 0.2350 0.0176 0.8003
6 0.2122 0.1513 0.0905 0.0296 0.9688 0.9079 0.8471 0.7863 0.7254 0.6646 0.6037 0.5429 0.4820 0.4212 0.3603
7 0.5809 0.6766 0.7722 0.8679 0.9636 0.0593 0.1550 0.2506 0.3463 0.4420 0.5377 0.6333 0.7290 0.8247 0.9204
8 0.9496 0.2018 0.4540 0.7062 0.9584 0.2106 0.4628 0.7150 0.9672 0.2194 0.4716 0.7238 0.9760 0.2282 0.4804
9 0.3183 0.7270 0.1357 0.5445 0.9532 0.3619 0.7706 0.1794 0.5881 0.9968 0.4056 0.8143 0.2230 0.6317 0.0405
10 0.6870 0.2522 0.8175 0.3827 0.9480 0.5132 0.0785 0.6438 0.2090 0.7743 0.3395 0.9048 0.4700 0.0353 0.6005
11 0.0557 0.7775 0.4992 0.2210 0.9428 0.6646 0.3863 0.1081 0.8299 0.5517 0.2735 0.9952 0.7170 0.4388 0.1606
12 0.4244 0.3027 0.1810 0.0593 0.9376 0.8159 0.6942 0.5725 0.4508 0.3291 0.2074 0.0857 0.9640 0.8423 0.7206
13 0.7931 0.8279 0.8627 0.8975 0.9324 0.9672 0.0020 0.0369 0.0717 0.1065 0.1414 0.1762 0.2110 0.2459 0.2807
14 0.1618 0.3531 0.5445 0.7358 0.9272 0.1185 0.3099 0.5013 0.6926 0.8840 0.0753 0.2667 0.4580 0.6494 0.8407

規則性があるかは分かりませんが、横への変化が出てきました。
これならば、ランダム値として使えそうです。

ただ、この連番を2000倍しましたが…2000倍が良いのか、100倍では駄目なのか…
あまりすっきりした理由が見つかりません。

では、こういう方法はどうだろうか…
シードに「ランダム」ノードの整数ランダム絶対値を使う。
要するにダブルで「ランダム」ノードを使う。

Random_03

これならば、特別な理由も何も考えずに済みます。
結果を見てみよう。
横:シード、縦:時間、15×15です。

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 0.6220 0.8440 0.0651 0.2861 0.5081 0.7292 0.9512 0.1723 0.3943 0.6154 0.8364 0.0585 0.2795 0.5015 0.7226
1 0.3404 0.1494 0.3680 0.1770 0.3955 0.2045 0.4231 0.2321 0.0411 0.2596 0.0737 0.2872 0.1012 0.3148 0.1288
2 0.8052 0.8603 0.9154 0.9705 0.0256 0.0808 0.1359 0.3720 0.4271 0.4822 0.5574 0.6125 0.6676 0.7227 0.7778
3 0.8906 0.4041 0.9213 0.6559 0.1694 0.6866 0.4174 0.9346 0.4519 0.1827 0.7000 0.2172 0.7307 0.4652 0.9825
4 0.1105 0.3310 0.5515 0.1540 0.3744 0.5949 0.8154 0.4178 0.6383 0.8588 0.0793 0.6817 0.9022 0.1227 0.3432
5 0.4558 0.8266 0.1473 0.4680 0.7887 0.1570 0.4777 0.7984 0.1692 0.4899 0.8106 0.1789 0.4996 0.8203 0.1911
6 0.9081 0.4042 0.4732 0.9693 0.4654 0.5344 0.0304 0.0994 0.5955 0.0916 0.1606 0.6566 0.7106 0.2067 0.7178
7 0.8029 0.1149 0.3568 0.5987 0.8405 0.1526 0.3944 0.6363 0.8782 0.1201 0.4321 0.6740 0.9159 0.1578 0.4697
8 0.4926 0.1785 0.0605 0.6662 0.5482 0.1539 0.0359 0.7218 0.6037 0.2095 0.0914 0.7774 0.6593 0.2651 0.1470
9 0.0983 0.3717 0.6901 0.9635 0.2368 0.5553 0.8286 0.1470 0.4204 0.7388 0.3715 0.6899 0.9633 0.2367 0.5551
10 0.0904 0.4734 0.8514 0.1342 0.4170 0.8951 0.1779 0.4607 0.8387 0.2217 0.5045 0.8825 0.2654 0.5482 0.9262
11 0.6459 0.0885 0.5310 0.9735 0.9527 0.3952 0.8378 0.2804 0.2526 0.6951 0.1377 0.5803 0.5594 0.0020 0.4445
12 0.2082 0.3383 0.4685 0.5986 0.5829 0.7130 0.8432 0.9733 0.1035 0.0878 0.2179 0.2880 0.4181 0.5483 0.5325
13 0.4758 0.1426 0.6160 0.2829 0.9498 0.4231 0.0900 0.7569 0.2303 0.8971 0.3705 0.0374 0.7043 0.1776 0.8445
14 0.8809 0.8834 0.9211 0.9588 0.9964 0.0340 0.0717 0.0743 0.1119 0.1496 0.1872 0.2249 0.2275 0.2651 0.9659

結果を見る限り、悪くはないと思いますが…
少し横への繋がりあるようにも思えます…

あくまでも参考までで…

|

« C4D ThinkingParticles PAgeノードの簡単なテスト | トップページ | C4D ThinkingParticles 簡単なスプラインエミッタを作ってみる。 »