我目前正在尝试自学c编程。我被困在学习随机数字上。我访问的许多网站都使用time()函数作为播种随机数生成器的方法。但我读到的许多帖子和网站都说使用系统时钟作为产生随机数的方法是有缺陷的。我的问题是“我究竟应该使用什么来生成真正的随机数?我应该用算术来操纵数字还是还有其他东西?具体来说,我正在寻找程序员遵循的随机生成的”最佳实践“ c编程语言中的数字。
以下是我所谈论的网站示例:
http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1042005782&id=1043284385
答案 0 :(得分:5)
srand(time(NULL))
足以满足一般基本用途。它的缺点是:
rand
生成很多随机数,您很可能会发现他们的统计分布不均匀。如果您正在执行Monte Carlo模拟等操作,这一点非常重要。有更复杂的RNG库可供加密和统计使用。
答案 1 :(得分:0)
如果您想要随机数,请使用:
randomize () ;
m = random(your limit);
printf("%d", m);// dont forget to include stdlib