c语言随机函数&&时间函数

c语言中的随机函数为rand(),但是rand生成的值得大小主要相对一个变量才产生的一定有含义的数,这个相对的变量我们可以再srand()函数中进行设置,srand函数是void类型,内部含一个无符号整形

定义如下

c语言随机函数&&时间函数

如果我们不定义的话

重复执行下面的代码产生的效果可能是同一个数

c语言随机函数&&时间函数
c语言随机函数&&时间函数但是如果在srand()中设置一个随时改变的参照量,那么每次执行产生的rand值就不会痛,我们知道有一个函数time(),这个值是不断的改变的,我们可以将其嵌入在srand中,那么每次产生rand值就会是不同的time()的返回是一个_int64 类型的数,time的定义是 time——t time(time_t timer)我们在定义的时候可以不使用返回类型time_t,我们只是调用time(time_t timer)那么我们的产生的随机值就存放在了timer里面,后面我们可以通过只用指针timer来调用我们产生的值其中time产生的值就是unix的时间戳,产生的值是以秒为单位来进行计算的,时间的计算就是目前的时间与1970年1月1日0时0分0秒之间的决定值只不过是用秒来表示,同时里面的参数可以不为*timer,可以为NULL,也可以直接用0来代替,c语言随机函数&&时间函数srand()是void类型,我们在srand()里面嵌套不断变化的函数time(0),那么我们产生的随机数每时每刻的相对值都是不同的,所以产生的随机数也就是不同的rand()函数是有返回值的,,至于要求产生多大范围内的数需要自己控制;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-—————————华丽的分割线如果上面的理解了,下面是比较官方的解释方法——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。(1)使用该函数首先应在开头包含头文件stdlib.h#include(C++建议使用#include,下同)(2)在标准的c库中rand可以产生于一个0~rand_max之间的一个随机数,rand_max是stdlib中定义的一个数,与系统有关(3)因为rand每次都是按照顺序产生固定的随机数,所以对于同一个程序,我们多次调用执行,会产生同样的数,也就是产生同样的效果,所以我们有时候也管随机数叫做伪随机数,(4)为了使得每次随机数生成时都生成一个不同的随机数,也就是不同的随机数序列,所以我们每次都为随机数生成器提供一个新的随机种子,我们可以通过使用srand()产生种子进行散播种子,只要种子不同,我们通过调用rand就会生成不同的随机数,srand成为随机数生成器的初始化器

1 /* This program generates and prints ten random integers between 1 and RAND_MAX*/
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 int main()
 5 {
 6     unsigned int seed; /*申明初始化器的种子,注意是unsigned int 型的*/
 7     int k;
 8     printf("Enter a positive integer seed value: n");
 9     scanf("%u",&seed);
10     srand(seed);
11     printf("Random Numbers are:n");
12     for(k = 1; k <= 10; k++)
13     {
14         printf("%i",rand());
15         printf("n");
16     }
17     return 0;
18 }

当种子为1的时候,我们可以不使用srand,因为系统默认·的种子为1
stdlib.h 中这两个函数的原型是:int rand();void srand (unsigned int);srand(time(0)); i=rand();或者srand(time(NULL));这样就是一个伪随机数。rand()产生伪随机数,srand函数提供种子,种子不同产生的随机数序列也不同,所以通常先调用srand函数 time()返回的是系统的时间(从1970.1.1午夜算起),单位:秒,种子不同当然产生的随机数相同几率就很小了。用rand()随机生成在[x,y]内的整数int k;k=x+rand()%(y-x+1)/k即为所求范围内随机生成的数,rand()%a的结果最大为a-1/原文链接: https://www.cnblogs.com/13224ACMer/p/5556962.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/234504

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午4:17
下一篇 2023年2月13日 下午4:17

相关推荐