0

浮動小数点数の配列をスクランブルするために使用できるモジュールがidlにあるかどうか疑問に思っていました。scramble.pro を使用してみましたが、問題は整数を返すことです。float を使用しようとすると、入力した正確な数値が返されません。次に例を示します。

array = [2.3, 4.5, 5.7,8.9]
scr_array = scramble(array)
print, scr_array

output:

4 2 8 5

フロートを使用する場合:

print, float(scr_array)

出力は次のとおりです。

4.0000 2.0000 8.0000 5.0000

何か案は?

4

2 に答える 2

1

このサンプリングルーチンを使用してみてください。ただし、すべての要素を要求してください。

IDL> array = [2.3, 4.5, 5.7,8.9]
IDL> scramble_indices = mg_sample(4, 4)
IDL> print, scramble_indices
           1           3           0           2
IDL> print, array[scramble_indices]
      4.50000      8.90000      2.30000      5.70000
于 2013-02-12T20:49:19.660 に答える
0

scramble.pro は、入力が整数配列であると想定するため、出力として常に整数配列を提供します。ただし、これを使用してインデックスのランダムな順序を生成し、これらを元の配列に戻すことができます (mgalloy が mg_sample で行ったように):

IDL> array = [2.3, 4.5, 5.7,8.9]
IDL> scr_array = array[scramble(n_elements(array))]
IDL> print, scr_array
      8.90000      2.30000      5.70000      4.50000

ここでscrambleは、単一の整数値が与えられているため、必要なランダム インデックスが作成されます。通常の IDL の場合のみ、同じ効果を得るためにrandomusort関数を組み合わせて使用​​することがよくあります。

IDL> array = [2.3, 4.5, 5.7,8.9]                  
IDL> indices = sort(randomu(seed, n_elements(array)))
IDL> scr_array = array[indices]                      
IDL> print, indices                                  
           3           2           0           1
IDL> print, scr_array                                
      8.90000      5.70000      2.30000      4.50000

ここではrandomu、 と同じ要素数の乱数のセットを生成するためにを使用しておりarraysortその乱数配列を並べ替えるインデックスを提供しています。一緒に、それらはインデックスのランダムな順序を提供します。もちろん、それを 1 行にまとめることもできます。

IDL> array = [2.3, 4.5, 5.7,8.9]                     
IDL> scr_array = array[sort(randomu(seed, n_elements(array)))]
IDL> print, scr_array
      5.70000      2.30000      8.90000      4.50000
于 2013-04-17T02:42:37.050 に答える