java.util.Randomオブジェクトのインスタンス化を担当している場合は、代わりにjava.util.Randomをサブクラス化して、独自のクラスをインスタンス化できます。変更できない他のコードがインスタンス化の原因である場合は、明らかに独自のサブクラスを使用できません。あなたの場合、これは選択肢ではないと思います。
もう1つの方法は、クラスのロード時に実装を変更することです。基本的に、java.util.Randomのバイトコードを書き直して、デフォルトで実行する以外のことを実行します。これの欠点は、変更する可能性のある1つのインスタンスだけでなく、java.util.Randomのすべてのインスタンスに影響することです。繰り返しになりますが、ほとんどのコードはRNGの実装の詳細に依存していないため、これはおそらく問題ではありません。
Javassistは非常に優れたバイトコードライブラリです。これにより、クラスのロード時にバイトコードを書き直すことができるため、たとえば、乱数を生成するメソッドの本体を、必要なRNGアルゴリズムを実装する独自のクラスの呼び出しに置き換えることができます。
java.util.Randomクラスに対して実行される単純なクラスファイルプロセッサを作成できます。コードは次のようになります。
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.get("Random"); // maybe java.util.Random
CtMethod m = cc.getDeclaredMethod("nextLong");
m.setBody("my.super.duper.RandomClass.nextLong()");
cc.writeFile();