# MATHRandContext*

## 構文

      #include <nitro/math/rand.h>

      typedef struct
      {
          u64 x;
          u64 mul;
          u64 add;
      }
      MATHRandContext32;

      typedef struct
      {
          u32 x;
          u32 mul;
          u32 add;
      }
      MATHRandContext16;

## 要素

x | 現在の乱数値を保持しています。 `MATH_Rand*()`ではこの値をシフトした値を取得します。
mul | 線形合同法にて、次の乱数を取得するために乗算される数を設定します。`MATH_InitRand*()`で固有の定数に初期化されますので、この値を変更する場合には、その後このメンバを変更してください。
add | 線形合同法にて、次の乱数を取得するために加算される数を設定します。`MATH_InitRand*()`で固有の定数に初期化されますので、この値を変更する場合には、その後このメンバを変更してください。

## 説明

線形合同法による乱数のコンテキスト構造体です。

`MATHRandContext32()`では内部で64ビットの値を保持し、`MATH_Rand32()`で32ビットの乱数を取得します。
`MATHRandContext16()`では内部で32ビットの値を保持し、`MATH_Rand16()`で16ビットの乱数を取得します。

## 参照

`MATH_InitRand*, MATH_Rand*`

## 履歴

Ver. 2004/12/13 初版