rand()产生随机数 及其和clock()的不同

rand()使用


首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数。

定义函数 : int rand(void)

函数说明 :
因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。

返回值:
返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。
0~RAND_MAX每个数字被选中的机率是相同的。

示例如下:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

//产生Range_Min-Range_Max之间的随机数,必须初始化种子,否则每次结果都一样

int main(void)

{

    time_t t;

    srand((unsigned) time(&t));

    printf("%d\n", (unsigned) time(NULL));

    printf("%d\n", (unsigned) time(&t));

    int
Range_Min = 1;

    int
Range_Max = 10;

    for(int
i=0; i<20; i++)

    {

        printf("%d\n",(int)(Range_Max*rand()/(double)RAND_MAX) +  Range_Min);

    }

    return
0;

}   

  

rand()和clock()的不同

clock计算的是进程实际使用的各种时间,time是wall time,即钟表时间,此时间内操作系统可能会调度多个进程执行。

函数名: clock 
功 能: 确定处理器时间 
用 法: clock_t clock(void); 
程序例:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include<stdio.h><br>#include<time.h>

#include<windows.h>

int main(void)

{

    clock_t start, end;

    start = clock();

    // vc下,头文件是<windows.h>,S要大些,其它情况都要小写;linux下,头文件为unistd.h

    Sleep(2000*2);

    end = clock();

    printf("The time was: %d seconds\n", (end - start)/CLOCKS_PER_SEC);

    return
0;

}

 

而time()是个时间的函数,time(NULL)就是去当前的时间

程序实例:

?





1

2

3

4

5

6

7

8

9

10

#include<stdio.h>

#include<time.h>

int main(void

   time_t t; 

   t = time(NULL); 

   printf("The number of seconds since January 1, 1970 is %ld",t); 

   return
0; 

  

时间: 2024-11-07 23:43:59

rand()产生随机数 及其和clock()的不同的相关文章

srand()与rand()生成随机数

srand()与rand()生成随机数 经过测试,当srand的值确定时,其对应的rand值也是确定的. #include <iostream> using namespace std; int main() { for (int i = 0; i <= 10; i++) { srand(i); cout << "当seed = " << i << "时,其结果为:" << rand() <&l

在C语言如何利用srand()和随机数函数rand()生成随机数

摘自:百度百科 在stdlib.h 中这两个函数的原型是: int rand(); void srand (unsigned int); ?在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关.为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过为随机数生成器提供一粒新的随机种子.函数 srand()可以为随机数生成器播散种子.只要种子不同rand()函数就会产生不同的随机数序列.srand

Matlab中rand(&#39;state&#39;,sum(clock))解析

一.问题来源 来自于一份PSO代码,PSO中需要初始化粒子位置和速度. 二.问题探究 众所周知,Matlab中的rand()函数产生的是伪随机数,但一般用来也可以接受.但是,如果我们知道伪随机数的初始状态,那么产生的伪随机数是唯一确定的.问题来了,Matlab每次启动会重置rand()和randn()的初始状态(重置为0),也就是说,你产生的随机数会出现两次随机数一模一样的情况,如: 1 >> rand('state',0) 2 >> rand(3,1) 3 4 ans = 5 6

有关rand(),srand()产生随机数学习总结

看到夏雪冬日的有关rand()和srand()产生随机数的总结,挺好的,学习了,然后又有百度其他人的成果,系统总结一下.本文转自夏雪冬日:http://www.cnblogs.com/heyonggang/archive/2012/12/12/2814271.html,Peng Lv:http://www.cnblogs.com/lvpengms/archive/2010/02/03/1663066.html#commentform. 要计算机产生一个随机数不像扔色子一样,计算机的每一步操作,就

随机数:rand()

首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明. rand(产生随机数) 表头文件: #include<stdlib.h> 定义函数 :int rand(void) 函数说明 : 因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间.在调用此函数产生随机数前,必须先利用srand()设好随机数种子,

rand随机数生成函数

#include<iostream> #include<cstdlib> #include<algorithm> #include<ctime> #include<vector> using namespace std; /*第一个函数是vector的引用,不用每次复制:而第二个函数每次都要对vector复制,第一个更优*/ void fill_random_int(vector<int> &v,int cnt) { v.cl

C/C++中产生随机数(rand,srand用法)

计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子.(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了.) 我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,

神奇的随机数rand()

随机数在统计理论中占有很重要的地位,很多应用都需要用到他,系统自带的rand()函数产生的是伪随机数,所以该如何真正的随机数呢? 1.c语言中的时间函数 关于c语言我查到的两个比较好的博文是:http://blog.sina.com.cn/s/blog_686d0fb001012o3x.html http://blog.csdn.net/wangluojisuan/article/details/7045592/ 里面写的很是详细,但是我想通过一个例子来说明感觉比较好.常用的也就这几个. cha

[转]C++/C中产生随机数(rand,srand用法)

参考原文地址:https://www.cnblogs.com/afarmer/archive/2011/05/01/2033715.html 计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生的每个小序列都有一个初始值,即随机种子(即根据某一个初始值代入某个公式产生一系列值),注意:小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后,它们又会重复出现. 我们知道rand()函数可以用来产生随机数,但这不是真正意义上