当前位置:首页 » 编程语言 » c语言random函数

c语言random函数

发布时间: 2023-03-28 06:16:27

① c中随机数怎么生成

//需要的头文件stdlib.h, time.h
//初始化随机种子,不用的话每次运行是一样的数
srand((unsigned int)time(NULL));
//生成0-n,不包括n
num = round()%n;

      在c语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。
可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,所以说,random函数不能在gcc,vc等编译器下编译通过。
rand()会返回一随机数值,范围在0至RAND_MAX 间。返回0至RAND_MAX之间的随机数值,RAND_MAX定义在stdlib.h,(其值至少为32767)我运算的结果是一个不定的数,要看你定义的变量类型,int整形的话就是32767。 在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。具体见下面的例子。
 
一 如何产生不可预见的随机序列呢利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。
       在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:
1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
3) 根据需要多次调用rand(),从而不间断地得到新的随机数;
4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

② 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;

③ 详细介绍一下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;
}

④ c语言里 random函数怎么实现的

1.
rand函数是根据一个数(我们可以称它为种子)为基准,以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,
2.
但这产生的并不是真意正义上的随机数,是一个伪随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值。
3.
种子相同,产生的随机序列相同。这样做的好处是,方便我们产生一组固定的随机序列,用来调试程序。
4.
C提供了srand()函数,用来设置种子,它的原形是void
srand(
int
a)。
5.
在调用rand函数产生随机数前,应该先利用srand()设好随机数种子,如果未设随机数种子,默认种子为1。

热点内容
给首付解压 发布:2024-11-02 22:24:01 浏览:51
活春文件夹 发布:2024-11-02 22:22:18 浏览:144
pythonlist参数传递 发布:2024-11-02 22:18:57 浏览:598
林肯冒险家买哪个配置人多 发布:2024-11-02 22:14:34 浏览:542
马铃薯存储 发布:2024-11-02 22:09:21 浏览:362
android的title居中 发布:2024-11-02 21:59:53 浏览:876
orchard源码 发布:2024-11-02 21:51:20 浏览:940
ntp服务器地址修改 发布:2024-11-02 21:31:46 浏览:818
c打开文件夹选中文件 发布:2024-11-02 21:31:12 浏览:600
sql数据库表大小 发布:2024-11-02 21:31:10 浏览:578