我想生成2^300到2 ^ 10范围内的随机数.我听说这个rand()函数不适合这么多的数字.有没有其他方法可以用几乎相等的分布生成它?
g_random_int() 返回在 [0..2^32-1] 范围内均匀分布的随机 guint32。
#include <glib.h>
int
main(void)
{
g_print("%d\n", g_random_int());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
与海湾合作委员会:
gcc -o rand rand.c `pkg-config --cflags --libs glib-2.0`
Run Code Online (Sandbox Code Playgroud)
编辑:
直接从 /dev/random 读取(不太便携),照常编译:
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
int
main(void)
{
int fd;
unsigned int number;
fd = open("/dev/random", O_RDONLY);
read(fd, &number, sizeof(number));
printf("%u\n", number);
close(fd);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
PS:检查是否有错误。
| 归档时间: |
|
| 查看次数: |
354 次 |
| 最近记录: |