srand(time(NULL)),srand和rand

供稿:hz-xin.com     日期:2025-01-14
rand函数需要和srand,time函数如何配合使用?

添加头文件: #include
程序开始,执行一次:
srand((unsigned)time(NULL));
只需要一次,无论以后你准备取多少次随机数。
---
取10个随机数
#include
#include
#include
void main(){ int i,j;
int x[10];
int v = 50,n=10;
srand((unsigned)time(NULL));
x[0] = rand() % v +1;

for (i=0;i<n;i++) {
Lab: x[i] = rand() % v +1;
for (j=0;j<i;j++) { if (x[i] == x[j]) goto Lab;} }

for(i=0;i<n;i++) printf("%2d
",x[i]);

}

1.概念A:srand用来设置随机数种子的,rand用来产生随机数的
srand(1);//1为随机的数的种子
printf("%d", rand());//因为种子为1不变,产生的随机数是不变的
2.void srand(unsigned int)查看参数为unsigned int
time_t time(time_t *);//time的构造函数带参time_t *
typedef long time_t; //time.h定义time_t为long
time(NULL);time(0)//返回的是一个long型时间值,取的是当前系统时间,因此总是变化的
3.srand(time(NULL))就是设置当前的时间值为种子,那么种子总是变化的
printf("%d", rand());//因为种子总是变化的,所以以该种子产生的随机数总是变化的
这里比较time(NULL)和time(0),没有多大意义啊
4.核心你该搞清楚 srand是怎么用的:srand定义种子,如果种子是个常量,那么产生的随机数不变,所以需要一个
总是变化的种子,而系统时间总是变化的将时间值转化成unsigned int传入srand就达到了产生可变种子的目的.因此
int iRet = rand()//产生的随机数每次都不一样
小例子:
#include
#include
#include

void main( void )
{
int i = 0;
srand( (unsigned)time(NULL));
//srand((unsigned int)time(0));
//srand(1);
for( i = 0; i < 100; i++ )printf("%d,[1,10]=%d
", rand(), (rand()%10+1));
}

time(NULL)返回当前时间,实质上是从1970年1月1日午夜(00:00:00)至今的秒数。
srand 是对随机数生成器进行初始化操作,设置随数种子
rand 每次调用返回一个随机数。

C语言运行时库的随机数生成器只能生成伪随机数。即通过srand设置的种子值进行复杂计算模拟随机数。因为如果用相同的数作种了,rand会生成相同的随机数序列。考虑以下代码:
for(int j=0; j<3; j++)
{
srand(0);
for(int i=0; i<5; i++)
{
printf("%d, ", rand());
}
puts("");
}
输出结果是:
38, 7719, 21238, 2437, 8855,
38, 7719, 21238, 2437, 8855,
38, 7719, 21238, 2437, 8855,

srand(time(NULL))是设置随机数的种子。
以当前时间作为随机数的种子。
rand()是产生随机数的。

C语言rand()和time(NULL)之间的问题。
rand()是去伪随机数的一个简单算法,他每次算出来的值不一样,不过要取一次种子当参数。。。,rand()中间会用到一个变量(也可能好几个),但不是你申请的,srand()相当于为这个变量赋值,每次rand()这个值都会变,所以你下一次不会 和前一个相同,只要你不重新调用 srand(j),重新调用这个...

srand(time(NULL))是以什么时间为种子,为什么使用了之后rand()的第一...
是以当前时间为种子,程序循环很快所以你的随机数会出现相同的,可以让放循环里面的,但的加延时语句,不然随机数都相同了 如果你闲时间种子不行有相同的话,你可以不用时间做种子,直接随机就可以啦

random. rand()怎么使用?
1、srand是C和C++编程语言中的一个函数,它被用来设置随机数生成器的种子。这个函数通常在需要产生随机数的情况下使用。2、基本的用法,(c#include<stdlib.h>\/\/需要包含这个头文件来使用srand和rand函数int main()\/\/用当前时间作为种子srand(time(NULL));\/\/生成一个随机数intrandom-number=rand...

c语言中rand()函数怎么用?
1 调用srand(time(NULL))设置随机数种子。2 调用rand函数获取一个或一系列随机数。需要注意的是,srand只需要在所有rand调用前,被调用一次即可,没必要调用多次。七、以下是随机获取10个整型值并输出的例子,辅助理解。include <stdio.h>#include <stdlib.h>#include <time.h>int main(){ int ...

c语言之rand函数的使用
生成的随机数都是这10个,也就是说,在种子seed不变的情况下,生成的随机数是伪随机数 3、我们引入头文件time.h,取时间戳作为seed的取值来源,改代码片段如下,将srand(1)改成srand(time(NULL))4、运行代码,得到10个随机数如下,定义非常量的srand参数,可以避免伪随机数的产生 ...

srand(time(NULL))是什么意思?
srand(time(NULL)):这是两个函数,一个是srand函数,这是在调用rand()这个函数之前使用的,rand()是一个产生随机数的函数,而srand是一个设置随机数种子的函数,通常这两个函数是一起使用的,来完成产生随机数的功能。而time(NULL)这个函数的返回值是作为srand函数的参数的,意思是以现在的系统...

C语言产生3个随机数是:srand(time(NULL)); a=rand(); b=rand()_百度...
srand(time(NULL)); 是设置随机种子,种子不同,每次运行时,生成的随机数序列不同,种子相同,则得到的序列是相同的。time(NULL)是获得当前时间(以秒为单位),这样,在不同的时间去运行程序,则会得到不同的随机序列,这样,每次得到的a b c是不相同的,如果不加这句,则每次都会得到相同的一...

srand(time(null))什么意思?
srand(time(NULL))表示设置伪随机数生成器的种子。程序中,使用time(NULL)获取当前时间,作为srand()的参数。这样每次运行程序时,种子都会不同,使得产生的随机数序列也不同。rand()函数生成的随机数是基于种子的。若种子相同,那么生成的随机数序列也完全相同。因此,通过调用srand(time(NULL)),将当...

c++ rand()函数怎么用
rand()%3+1,在使用rand()前,要设置种子 srand(time(NULL)),比如:include <iostream>#include <time.h>using namespace std;int main(){srand(time(NULL));int i,j;cout<<"随机10次的结果"<<endl;for (j=0;j<10;j++){i=rand()%3+1;cout<<i<<endl;}} ...

srand(time(NULL))是什么意思?
srand(time(NULL)):这是两个函数,一个是srand函数,这是在调用rand()这个函数之前使用的,rand()是一个产生随机数的函数,而srand是一个设置随机数种子的函数,通常这两个函数是一起使用的,来完成产生随机数的功能。而time(NULL)这个函数的返回值是作为srand函数的参数的,意思是以现在的系统...