1 formato de texto
usando Sistema;
namespace Legalsoft.Truffer
{ /// <summary> /// Hash aleatorio de alta calidad de un número entero en varios tipos numéricos. /// </summary> clase pública Ranhash { pública Ranhash() { }
público ulong int64(ulong u)
{ ulong v = u * 3935559000370003845L + 2691343689449507681L; v ^= v >> 21; v ^= v << 37; v ^= v >> 4; v*= 4768777513237032717L; v ^= v << 20; v ^= v >> 41; v ^= v << 5; volver v; }
public uint int32(ulong u)
{ return (uint)((long)u & 0xffffffff); }
/// <summary>
/// Devuelve el hash de u como un valor de doble precisión
/// valor flotante entre 0. y 1.
/// </summary>
/// <param name="u"></param >
/// <devoluciones></devoluciones>
public double doub(ulong u)
{ double r = 5.42101086242752217E-20 * int64(u); retorno (r < 0,0)? (1 + r): r; } } }
2 formato de código
using System;
namespace Legalsoft.Truffer
{
/// <summary>
/// High-quality random hash of an integer into several numeric types.
/// </summary>
public class Ranhash
{
public Ranhash()
{
}
public ulong int64(ulong u)
{
ulong v = u * 3935559000370003845L + 2691343689449507681L;
v ^= v >> 21;
v ^= v << 37;
v ^= v >> 4;
v *= 4768777513237032717L;
v ^= v << 20;
v ^= v >> 41;
v ^= v << 5;
return v;
}
public uint int32(ulong u)
{
return (uint)((long)u & 0xffffffff);
}
/// <summary>
/// Returns hash of u as a double-precision
/// floating value between 0. and 1.
/// </summary>
/// <param name="u"></param>
/// <returns></returns>
public double doub(ulong u)
{
double r = 5.42101086242752217E-20 * int64(u);
return (r < 0.0) ? (1 + r) : r;
}
}
}