c语言 clock time,请问C语言中clock()函数该怎么用?

8498383249af3d08ddab46f36d9b0e9a.png

春华秋衣

The clock() function returns an approximation of processor time used by the program.以上内容摘自 man 3 clock返回接近程序使用的CPU时间 你拿这个做种子?如果linux下 建议GRand* g_rand_new (void);Creates a new random number generator initialized with a seed taken either from /dev/urandom (if existing) or from the current time (as a fallback).使用这个函数 直接使用操作系统提供的/dev/urandom 这个设备是根据环境噪声产生的真(记得好像是)随机数如果没有urandom就使用当前时间 具体这个时间精确到多少不知道如果不用glib库就直接去读/dev/urandom设备 这个做种子是最好了的linux里面一般都用这个/dev/random 和/dev/urandom得到真随机数 这个这个设备的种子是 通过中断事件得到的 网卡 键盘 等设备的中断是异步 产生的随机数应该可以算作真随机数了不过这个只适应linux而且 程序环境必须是在有交换性 也就是外界必须提供中断事件 而且如果熵池里面的随机数用完了 读取这个设备会造成程序阻塞 直到熵池里有新的随机数如果你的程序适应这种条件可以使用glib 有交换环境 linux (一般不是特殊环境下都满足)建议直接使用这个方便的函数了glib就是为了方便程序员 跨平台跑程序的 在window下可以用clock()函数没什么好说的我直接把man里面note节翻译给你看下Note that the time can wrap around. On a 32-bit system where CLOCKS_PER_SEC equals 1000000 this function will return the same value approximately every 72 minutes.每72分钟会产生相同的值 (所以肯定是伪随机数,不过可以达到一般程序要求了)On several other implementations, the value returned by clock() also includes the times of any children whose status has been collected via wait(2) (or another wait-type call). Linux does not include the times of waited-for children in the value returned by clock(). The times(2) function, which explicitly returns (separate) information about the caller and its children, may be preferable.The C standard allows for arbitrary values at the start of the program; subtract the value returned from a call to clock() at the start of the program to get maximum portability.C标准允许在程序开始设置一个任意值减去"clock()"的返回值 作为结果以方便移植The value returned is the CPU time used so far as a clock_t; to get thenumber of seconds used, divide by CLOCKS_PER_SEC. If the processortime used is not available or its value cannot be represented, thefunction returns the value (clock_t) -1.函数的返回值 使用的秒数除以CLOCKS_PER_SEC (32位系统这个数是1000000)如果time不可用 返回(clock_t) -1linux里面不会收集子进程的CPU使用时间但某些其他实现收集子进程CPU使用时间 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值