小编use*_*010的帖子

使用getrandom在C中随机浮动

我试图在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()在线的例子.

c random

13
推荐指数
2
解决办法
906
查看次数

标签 统计

c ×1

random ×1