1 文本格式
using System;
namespace Legalsoft.Truffer
{
/// <summary>
/// Backup generator if Ranq1 has too short a period and Ran is too slow.The
/// period is 8.5E37. Calling conventions same as Ran, above.
/// </summary>
public class Ranq2
{
private ulong v { get; set; }
private ulong w { get; set; }
public Ranq2(ulong j)
{
this.v = 4101842887655102017L;
this.w = 1;
v ^= j;
w = (ulong)int64();
v = (ulong)int64();
}
public ulong int64()
{
v ^= v >> 17;
v ^= v << 31;
v ^= v >> 8;
w = 4294957665U * (w & 0xffffffff) + (w >> 32);
return (ulong)(v ^ w);
}
/// <summary>
/// Return random double-precision floating value in the range 0. to 1.
/// </summary>
/// <returns></returns>
public double doub()
{
double r= 5.42101086242752217E-20 * int64();
return (r < 0.0) ? (1 + r) : r;
}
public uint int32()
{
return (uint)int64();
}
}
}
2 代码格式
cs
using System;
namespace Legalsoft.Truffer
{
/// <summary>
/// Backup generator if Ranq1 has too short a period and Ran is too slow.The
/// period is 8.5E37. Calling conventions same as Ran, above.
/// </summary>
public class Ranq2
{
private ulong v { get; set; }
private ulong w { get; set; }
public Ranq2(ulong j)
{
this.v = 4101842887655102017L;
this.w = 1;
v ^= j;
w = (ulong)int64();
v = (ulong)int64();
}
public ulong int64()
{
v ^= v >> 17;
v ^= v << 31;
v ^= v >> 8;
w = 4294957665U * (w & 0xffffffff) + (w >> 32);
return (ulong)(v ^ w);
}
/// <summary>
/// Return random double-precision floating value in the range 0. to 1.
/// </summary>
/// <returns></returns>
public double doub()
{
double r= 5.42101086242752217E-20 * int64();
return (r < 0.0) ? (1 + r) : r;
}
public uint int32()
{
return (uint)int64();
}
}
}