【发布时间】:2016-11-30 08:54:48
【问题描述】:
我有以下代码
#include <unistd.h>
#include <sys/syscall.h>
#include <linux/random.h>
unsigned long int s;
syscall(SYS_getrandom, &s, sizeof(unsigned long int), 1);
std::cout << s << std::endl;
根据GETRANDOM(2),它从 /dev/random 或 /dev/urandom 中返回具有高熵的随机数。
如何使用它返回一个范围内的数字?我使用的范围是 [0 - 2^125] [0 - 125^2]
【问题讨论】:
-
使用模数?
getrandom(args) % (maxRange+1) -
2^125 不适合普通整数类型。
-
2^125 需要 126 位来表示
-
抱歉,我输入了错误的范围限制。 2^125 是巨大的!实际上是 [0-125^2]
-
@George 我已经尝试过了。但获得的结果绝不是随机的。你知道我做错了什么吗?