private long toLong(byte[] bytes) { // if bytes less then 6 pad with random if (bytes.Length < 6) { byte[] temp = new byte[6]; Array.Copy(bytes, 0, temp, 0, bytes.Length); for (int i = bytes.Length; i < temp.Length; ++i) { temp[i] = (byte)FanInt.random(); } bytes = temp; } // mask bytes into 6 byte long long x = ((bytes[0] & 0xFFL) << 40) | ((bytes[1] & 0xFFL) << 32) | ((bytes[2] & 0xFFL) << 24) | ((bytes[3] & 0xFFL) << 16) | ((bytes[4] & 0xFFL) << 8) | ((bytes[5] & 0xFFL) << 0); // if we have more then six bytes mask against primary six bytes for (int i = 6; i < bytes.Length; ++i) { x ^= (bytes[i] & 0xFFL) << (((i - 6) % 6) * 8); } return(x); }
public object random() { if (m_size == 0) { return(null); } int i = (int)FanInt.random(); if (i < 0) { i = -i; } return(m_values[i % m_size]); }
public List shuffle() { modify(); for (int i = 0; i < m_size; ++i) { int randi = (int)FanInt.random() % m_size; if (randi < 0) { randi = -randi; } object temp = m_values[i]; m_values[i] = m_values[randi]; m_values[randi] = temp; } return(this); }
private long resolveNodeAddr() { try { return(resolveMacAddr()); } catch (Exception e) { Err.dumpStack(e); } try { return(resolveIpAddr()); } catch (Exception e) { Err.dumpStack(e); } return(FanInt.random()); }
internal Factory() { nodeAddr = resolveNodeAddr(); seq = FanInt.random(); }
public long random() { return(FanInt.random(this)); }