Поскольку вы не указали язык программирования, я дам решение на языке C, а затем вы сможете адаптировать его к любому языку программирования, который вы могли бы использовать, если бы он не был C (или близким родственником).
Вы можете просто позвонить arc4random дважды и конкатенации значения:
#include <stdint.h>
#include <stdlib.h>
int64_t rand64(void)
{
uint64_t r_lo = (uint64_t)arc4random();
uint64_t r_hi = (uint64_t)arc4random();
return (int64_t)((r_hi << 31) | (r_low >> 1));
}
Вы можете преобразовать это в ASCII строку шестнадцатеричных довольно легко:
char s[17];
int64_t r = rand64();
sprintf(s, "%16llx", r);
(Если вам это нужно как десятичные или некоторые другой формат, то просто измените строку формата sprintf
).
Какой язык программирования, платформа, среда и т. Д.? –
oops ... C# извините – Funky
OK - я уже разместил ниже ответ C, который должен быть довольно тривиальным для порта C#. –