c语言哪个时间函数是精确到毫秒的?使用srand(time(NULL))的话,如果在同一秒运行程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言哪个时间函数是精确到毫秒的?使用srand(time(NULL))的话,如果在同一秒运行程序相关的知识,希望对你有一定的参考价值。
c语言哪个时间函数是精确到毫秒的?使用srand(time(NULL))的话,如果在同一秒运行程序,产生的随机数都是一样的。
哪个时间函数是精确到毫秒的而且可以给srand当种子的?
头文件:time.h
作用:返回从程序执行开始的时钟周期数
返回值类型:clock_t型,为自定义的长整型
可以将其除以常数CLOCKS_PER_SEC再乘以1000以转化为毫秒数。追问
为什么我把clock()当做srand()的种子时,每次运行得到的十个随机数都是一样的?
由于程序执行太快,clock()函数返回值基本为0。如果你想创造多个并行的程序,可以尝试多线程编程,Windows下用CreateThread API,Linux下用fork()函数。然后,每个线程分别用Sleep()函数等待线程号*10ms的时间,再调用clock()函数,此时返回值就会各异了。或者,采用二次随机,即先产生一串随机数作为每个线程的种子,然后再根据种子产生随机序列。
参考技术A 在没次获取随机数前sleep2.5秒咯java1.8中如何使用精确到毫秒的时间
主要涉及三个类:
- SimpleDateFormat,用于显示时间的格式。
- Date,获取精确到毫秒的时间。
- Calendar,获取日历格式的时间。
示例代码如下:
package baseAPI;
import java.util.* ; // 导入需要的工具包
import java.text.* ; // 导入SimpleDateFormat所在的包
class mmm{ // 以后直接通过此类就可以取得日期时间
private SimpleDateFormat sdf = null ; // 声明SimpleDateFormat对象
public String getDate(){ // 得到的是一个日期:格式为:yyyy-MM-dd HH:mm:ss.SSS
this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ;
return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作
}
public String getDateComplete(){ // 得到的是一个日期:格式为:yyyy年MM月dd日 HH时mm分ss秒SSS毫秒
this.sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒SSS毫秒") ;
return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作
}
public String getTimeStamp(){ // 得到的是一个时间戳
this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS") ;
return this.sdf.format(new Date()) ;// 将当前日期进行格式化操作
}
};
public class useDate{
public static void main(String args[]){
mmm dt = new mmm() ;
System.out.println("系统日期:"+dt.getDate()) ;
System.out.println("中文日期:"+dt.getDateComplete()) ;
System.out.println("时间戳:"+dt.getTimeStamp()) ;
Calendar calendar = new GregorianCalendar();
StringBuffer strb= new StringBuffer();
strb.append(calendar.get(Calendar.YEAR));
strb.append("-"+(calendar.get(Calendar.MONTH)+1));
strb.append("-"+calendar.get(Calendar.DAY_OF_MONTH));
strb.append(" "+calendar.get(Calendar.HOUR_OF_DAY));
strb.append(":" +calendar.get(Calendar.MINUTE));
strb.append(":"+calendar.get(Calendar.SECOND));
strb.append(":"+calendar.get(Calendar.MILLISECOND));
System.out.println(strb);
}
};
以上是关于c语言哪个时间函数是精确到毫秒的?使用srand(time(NULL))的话,如果在同一秒运行程序的主要内容,如果未能解决你的问题,请参考以下文章