Я пытаюсь создать случайное число с плавающей запятой между 0 и 1 (независимо от того, имеет ли он значение [0,1] или [0,1] для меня неважно). Каждый вопрос онлайн об этом, кажется, включает вызов rand()
, засеянный time(NULL)
, но я хочу иметь возможность вызывать свою программу более одного раза в секунду и получать разные случайные числа каждый раз. Это привело меня к серверу getrandom в Linux, который извлекает из /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;
}
Мой вопрос в том, правильно ли я делаю это правильно. Кажется, это работает, но я беспокоюсь, что я что-то злоупотребляю, и нет примеров, использующих getrandom() онлайн.