コードを見ると、GetTrueRandomNumber()から何らかの値を取得していると思いますが(コードがありません)、その数値を特定の値の範囲に収めたいと考えています。つまり、特定の範囲の数値を生成するメソッドがあるため、その出力を取得してmt_rand()に入力しています。
あなたの質問に対する直接の答えではありませんが、より良い解決策は、最初に必要な値の範囲を把握することです(つまり、入力$ minが0で、$maxが$max-$ minであるかのように)。次に、その範囲の値を取得するために必要な最大ビット数を計算します。次に、GetTrueRandomNumber()の出力からそのビット数を抽出します。値が範囲内にある場合は、数値+元の$min値を返します。値が範囲内にない場合は、より多くのデータを取得します。重要なのは、目的の範囲に収まるまでビットを破棄することです。
このためのサンプルソースコードが必要な場合は、次を試してください。
http://barebonescms.com/documentation/csprng/
似たようなものをまとめることができるはずです。このような場合にmt_rand()を使用することには注意が必要ですが、この非常に特殊なインスタンスでは問題ない可能性があります。それはあなたがそれを何のために使うことを計画しているかによります。また、メルセンヌツイスターの最初の数字が実際にどれだけうまく分布しているかにも大きく依存します。私は誰もそれについて何の仕事もしていないと思います。MTは、一度だけシードすることを目的としています。つまり、MTを繰り返しシードするための分布パターンを知っている人です。また、他のコードがmt_rand()を使用している場合、後のmt_rand()呼び出しによって生成される可能性のある後の値に基づいて、関数の状態が公開されるリスクがあります。