我试图在0和1之间生成一个随机浮点数(无论它在[0,1]还是[0,1]上对我来说都不重要).关于这个问题在网上的每一个问题似乎都涉及rand()电话,种子time(NULL),但我想能够每秒多次调用我的程序并且每次都得到不同的随机数.这引导我进入Linux中的getrandom系统调用,它来自/ dev/urandom.我想出了这个:
#include <stdio.h>
#include <sys/syscall.h>
#include <unistd.h>
#include <stdint.h>
int main() {
uint32_t r = 0;
for (int i = 0; i < 20; i++) {
syscall(SYS_getrandom, &r, sizeof(uint32_t), 0);
printf("%f\n", ((double)r)/UINT32_MAX);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题只是我是否正确地做到了这一点.它似乎有用,但我担心我会误用某些东西,并且旁边没有使用getrandom()在线的例子.