你如何创建一个随机的64位数字?

时间:2013-07-15 14:11:13

标签: c# random 64-bit int

我有一个规范的一部分,要求我创建一个随机的64位数字,并将以下转换为字符串: (0到2 ^ 63 - 1)

我不知道这在括号中是什么意思,任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

对于0到2 ^ 63-1之间的随机64位数,括号是set-builder表示法,不包括0或2 ^ 63-1。

答案 1 :(得分:0)

由于您没有指定编程语言,我将在C中提供解决方案,然后您可以将其调整为您可能正在使用的任何编程语言,如果它不是C(或近亲)。 / p>

您可以只调用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格式字符串。)