c语言中random函数
A. c语言random函数怎么用
#include<time.h>
srand((unsigned)time(0));//初始化随机种子
intn;
n=rand()%10+1;//得到1到10之间的随机数
B. c语言random()的问题
srand((int)time(NULL))用于设定随机数种子。rand()%100,产生0-99的随机数。如果要产生16-59之间的数,可以这样写:rand()%44+16(这里44由59-16+1得到)。其他情况与此雷同。
rand()是不能产生真正的随机数的。即使不能产生真正的随机数,也要大概接近。而rand()好象每次的随机都一样。之所以rand()每次的随机数都一样是因为rand()函数使用不正确。
各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。
(2)c语言中random函数扩展阅读
调用随机数函数 rand()() 的时候, 实际得到的这个随机数并不是绝对随机的,它是以一个初始值,通过一个算法,计算出来的“伪随机数"数列,每次调用rand()()时,从这个数列依次取出一个值,做为随机数。
这个初始的值就是"随机数种子", 也就是说,如果随机数种子相同,计算出的随机数数列是相同的。而srand()om( x) 这个函数就是初始化随机数产生器,设定随机数种子用的。给定的x的就是随机数种子。可以验证,当你多次调用srandm(x)时,如果x取值相同,则得到的随机数数列是一样的。
所以,若我们每次运行程序时,要得到不同的随机数序列,就应该用不同的种子来初始化这个随机数产生器。比如说,用时间初始化它,或者用getpid(),用进程的pid号初始化,由于每次运行程序时,它的pid号一般是不同的,所以能够产生不同的随机数序列。
C. C语言中Random包含在哪个函数库中
stdlib.h中有一个的rand()函数,但是没有random。
Random意思是返回一个知0~num-1之间的随机数。random(num)是在stdlib.h中的一个宏定义。num和函数返回值都是整型数。
如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。
(3)c语言中random函数扩展阅读:
void loop() {
//一个0到299之间的随机数
randNumber = random(300);
Serial.println(randNumber);
//一个10到19之间的随机数
randNumber = random(10, 20);
Serial.println(randNumber); delay(50);
}
D. 有关C语言中random函数的用法
这段程序实现是产生十个随机数,srand函数是输入系统随机种子,程序一般都是采用时间作为随机种子。至于产生1到100之间的数可以对随机产生值进行100求模,这样就可以保证数在1~100之间了!
E. C语言中取随机数的函数
1. 基本函数
在C语言中取随机数所需要的函数是:
int rand(void); void srand (unsigned int n);
rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件:
#include <stdlib.h>
2. 使用方法
rand()函数返回0到RAND_MAX之间的伪随机数(pseudorandom)。RAND_MAX常量被定义在stdlib.h头文件中。其值等于32767,或者更大。
srand()函数使用自变量n作为种子,用来初始化随机数产生器。只要把相同的种子传入srand(),然后调用rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用rand()之前没有先调用srand(),就和事先调用srand(1)所产生的结果一样。
举个例子,假设我们要取得0~10之间的随机整数(不含10本身):
/* 例1:不指定种子的值 */
for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次运行都将输出:1 7 4 0 9 4 8 8 2 4
/* 例2:指定种子的值为1 */
srand(1); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次运行都将输出:1 7 4 0 9 4 8 8 2 4
例2的输出结果与例1是完全一样的。
/* 例3:指定种子的值为8 */ srand(8); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次运行都将输出:4 0 1 3 5 3 7 7 1 5
该程序取得的随机值也是在[0,10)之间,与srand(1)所取得的值不同,但是每次运行程序的结果都相同。
/* 例4:指定种子值为现在的时间 */ srand((unsigned)time(NULL)); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
该程序每次运行结果都不一样,因为每次启动程序的时间都不同。另外需要注意的是,使用time()函数前必须包含头文件time.h。
3. 注意事项
求一定范围内的随机数。
如要取[0,10)之间的随机整数,需将rand()的返回值与10求模。
randnumber = rand() % 10;
那么,如果取的值不是从0开始呢?你只需要记住一个通用的公式。
要取[a,b)之间的随机整数(包括a,但不包括b),使用:
(rand() % (b - a)) + a
伪随机浮点数。
要取得0~1之间的浮点数,可以用:
rand() / (double)(RAND_MAX)
如果想取更大范围的随机浮点数,比如0~100,可以采用如下方法:
rand() /((double)(RAND_MAX)/100) 其他情况,以此类推,这里不作详细说明。
F. 详细介绍一下C语言里面的随机数产生函数random怎么用
rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( int a).
初始化随机产生器既rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过sand()函数,我们是可以产生可以预见的随机序列,那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列,是吧。利用srand((unsign)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的.
下面讲一讲在C语言里所提供的随机数发生器的用法。现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:
1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
3) 根据需要多次调用rand(),从而不间断地得到新的随机数;
4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
以下是一个产生随机数的例子:
需要首先使用随机数“种子”初始化,srand函数:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>//使用当前时钟做种子
voidmain(void)
{
inti;
srand((unsigned)time(NULL));//初始化随机数
/*打印10个随机数.*/
for(i=0;i<10;i++)
printf("%d ",rand());
}
#include<stdlib.h>
#include<time.h>
main
{
inti;
srand(time(0));//初始化随机种子
i=rand();//产生随机数
}
首先,加一个"#include<stdlib.h>
然后设一个变量,如j,j=rand(),就可以给j赋一个1~32767的随机数,如果要获得一个随机函数的十位(其它类似),只需令j=j%10就行.
添加头文件 #include<time.h>
然后在文件中添加 srand((unsigned)time(NULL));
srand()是用来初始化随机种子数的,因为rand的内部实现是用线性同余法做的,它不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的.
上面是有个随机种子的说明及方法,为了避免重复.然后再 用 随机函数,rand() 就行了.
头文件是 stdlib.h
random() 产生随机数为 0或1
random(n) 产生随机数为 0到n之间的一个随机数
rand() 产生 0到32768之间的一个随机数
函数名: randomize
功 能: 初始化随机数发生器
用 法: void randomize(void);
程序例:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
intmain(void)
{
inti;
randomize();
printf("Tenrandomnumbersfrom0to99 ");
for(i=0;i<10;i++)
printf("%d ",rand()%100);
return0;
}
G. c语言里 random函数怎么实现的
1.
rand函数是根据一个数(我们可以称它为种子)为基准,以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,
2.
但这产生的并不是真意正义上的随机数,是一个伪随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值。
3.
种子相同,产生的随机序列相同。这样做的好处是,方便我们产生一组固定的随机序列,用来调试程序。
4.
C提供了srand()函数,用来设置种子,它的原形是void
srand(
int
a)。
5.
在调用rand函数产生随机数前,应该先利用srand()设好随机数种子,如果未设随机数种子,默认种子为1。
H. c语言中randomize()和random()函数
这里是我在网络中搜集到的例子和一些简介,呵呵,我开始也不是很懂的,你好好找找这类的资料就会懂的。。
这样就可以产生0到7FFF之间的任意随即数了。注意加上头文件#include<time.h>就好了
要产生10个的话,一个for循环
inta[10];
for(i=0;i<10;i++)
a[i]=rand();
不是写的明白了吗,srand你没写啊,要先设置种子,编译器里如果不设置种子,种子会默认为0,那么每次运行的随即数都一样的。用time函数来改变种子,就可以很好的体现出“真正的随即”了。
完整代码:
例子:
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
main(){
inti,a[10];
srand(time(0));
for(i=0;i<10;i++)
a[i]=rand();
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}
NOWOK?
例子:
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
main(){
inti,a[10];
srand(time(0));
for(i=0;i<10;i++)
a[i]=rand();
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}
例子:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
main()
{inta,b,c,d=1;<br>while(d!=0)<br>{srand(time(0));<br>a=random(100);<br>b=random(100);<br>printf("%d+%d=",a,b);<br>scanf("%d",&c);<br>if((a+b)==c)<br>printf("VeryGood\n");<br>else<br>printf("Sorryyourareerror\n");<br>scanf("%d",&d);<br>}
}
I. C语言random函数
s_addr是一个long型的变量,当然可以用random的返回值进行赋值。结构体如下:
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;////////////////////////////////////////这里
} S_un;
} in_addr;
IP地址本来就是一个32位整数,只不过为了方便记忆和查看,将8位作为一组,每组用10进制数字表示,并且用'.'隔开。比如:0.0.0.3,对应的32位二进制数为:0000000000.....111(前面有29个0),s_addr就是记录这个二进制数的。
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;
这个是用4个10进制数表示的IP地址,
s_un_b.s_b1=0
s_un_b.s_b2=0
s_un_b.s_b3=0
s_un_b.s_b4=3
就是IP地址"0.0.0.3"了,系统负责将它转换为32位二进制数。
struct {u_short s_w1,s_w2;} S_un_w;
这个是指前16位作为一部分,后面16位作为一个部分。".0.0.0.3"前面16位作为一个部分值为0,后面的部分值为3,所以:
s_un_w.s_w1=0;
s_un_w.s_w2=3;
J. C语言中 random() 函数怎么用
一楼,c里面哪里来的randomize和random????
c里面初始化随机种子是srand(int),然后rand()是返回一个随机值,范围是0--32767