上限がない場合は、すべての数値の絶対値を合計するか、すべてを減算します。
別の可能な解決策は、リスト内の最小数と最大数を取得し、それらの範囲外のものを選択することです (おそらく最大数の 2 倍)。
または、おそらく最良の方法は、標準偏差である限り、平均、最小および最大の数を計算することです。次に、このすべてのデータを使用して、数値がどのように構造化されているかを把握し、それに応じて選択できます (特定の負の値の周りにすべてがクラスター化されていますか? 正の値を選択します。すべての小さな値は? 大きな値を選択するなど)。
の線に沿った何か
number := 1
multiplier := random(1000)+1
if avg>0
number:= -number
if min < 1 and max > 1
multiplier:= 1 / (random(1000)+1)
if stdDev > 1000
number := avg+random(500)-250
multiplier:= multiplier / (random(1000)+1)
(私の頭の上からのほんの一例)
または別の可能性は、すべての数値を一緒に XOR することです。良い結果が得られるはずです。