Java tutorial
//Revised from act.soap.util; import java.util.*; import java.security.SecureRandom; public class UUID { private int d1; private short d2; private short d3; private byte[] d4; public static final UUID nil = new UUID(0, (short) 0, (short) 0, new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }); static Random random = new Random(); public static UUID generate() { int d1 = random.nextInt() % 65536; d1 += random.nextInt() % 65535 * 65535; int d2 = random.nextInt(); int d3 = random.nextInt(); byte[] d4 = new byte[8]; for (int i = 0; i < 4; i++) { int t = random.nextInt(); d4[i * 2] = (byte) (t % 256); d4[i * 2 + 1] = (byte) (t / 256 % 256); } return new UUID(d1, (short) (d2 % 65536), (short) (d3 % 65536), d4); } public UUID() { d1 = 0; d2 = 0; d3 = 0; d4 = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }; } public UUID(int d1, short d2, short d3, byte[] d4) { this.d1 = d1; this.d2 = d2; this.d3 = d3; this.d4 = new byte[8]; for (int i = 0; i < 8; i++) this.d4[i] = d4[i]; } public String toString() { String temp1, temp2, temp3, temp4, temp; temp1 = Integer.toHexString(d1); while (temp1.length() < 8) temp1 = new String("0") + temp1; if (d2 < 0) temp2 = Integer.toHexString(d2 + 65536); else temp2 = Integer.toHexString(d2); while (temp2.length() < 4) temp2 = new String("0") + temp2; if (d3 < 0) temp3 = Integer.toHexString(d3 + 65536); else temp3 = Integer.toHexString(d3); while (temp3.length() < 4) temp3 = new String("0") + temp3; temp = temp1 + "-" + temp2 + "-" + temp3 + "-"; for (int i = 0; i < d4.length; i++) { if (d4[i] < 0) temp4 = Integer.toHexString(d4[i] + 256); else temp4 = Integer.toHexString(d4[i]); while (temp4.length() < 2) temp4 = new String("0") + temp4; temp += temp4; } return temp; } public static void main(String[] args) { for (int i = 0; i < 100; i++) { System.out.println(UUID.generate().toString()); } } }