Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float nrSpare;
- bool nrSpareReady = false;
- public float NormalRand(float mean, float deviation) {
- if (nrSpareReady) {
- nrSpareReady = false;
- return nrSpare * deviation + mean;
- }
- else {
- float u, v, s;
- while (true) {
- u = Math.Rand(0.0f, 1.0f) * 2.0f - 1.0f;
- v = Math.Rand(0.0f, 1.0f) * 2.0f - 1.0f;
- s = u * u + v * v;
- if (0.0f < s and s < 1.0f)
- break;
- }
- float mul = Math.Sqrt(-2.0f * RFHumpUtils.Log(s) / s);
- nrSpare = v * mul;
- nrSpareReady = true;
- return mean + deviation * u * mul;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement