vc环境下c语言怎么生成随机数能给个0-100之间的程序最好了…

r = ( (double)rand() / ((double)(RAND_MAX) (double)(1)) );

请问如何用C语言写随机数产生器?给个代码谢谢!

一个可移植的rand 和srand 的实现方法

ststic long next= 1;

int rand(void ) //RAND_MAX= 32767

next= next* 1103515245+ 12345;

return (int) (next/ 65536)% 32768;

void srand(int seed)

next= seed;

C语言中怎样生成随机数?

C语言生成

为rand。

rand(void);

stdlib.h

获取一个非负随机

注意事项:

rand是

,由一个种子计算得来。

如果种子相同,每次启动

,获取到的

是固定的。

可以通过srand设置当前时间作为种子,使随机效果更好。

srand(time(NULL));

要获取[m,n]范围的随机数,可以使用代码

rand()%(n-m+1)+m例子如下

如果我们想得到一个

0-60的随机数那么可以写成

这样就OK了,简单;

i=rand()%60;

i=rand()%60;

srand((unsigned)time(

)),否则得到的随机数就是一个固定数

2:srand()

里的值必须是动态变化的:

当然最好有个统一的标注如下;

就可以了,省事:其实可以不用写srand()

,只用rand()就可以了,rand()根据种子而产生随机数

1,提供每次获得随机数的基数而已在VC中设计到随机数有两个函数

srand()

rand()

srand()

的作用是是一个种子在vc中设计到随机数有两个函数 srand() and rand() srand() 的作用是是一个种子,提供每次获得随机数的基数而已,rand()根据种子而产生随机数 注意 1:srand() 里的值必须是动态变化的,否则得到的随机数就是一个固定数 2:其实可以不用写srand() ,只用rand()就可以了,省事,简单,例子如下 如果我们想得到一个 0-60的随机数那么可以写成 int i; i=rand()%60; 就可以了。 当然最好有个统一的标注如下: int i; srand((unsigned)time( null )); i=rand()%60; 这样就ok了。在VC中设计到随机数有两个函数

srand() and rand()

srand() 的作用是是一个种子,提供每次获得随机数的基数而已,rand()根据种子而产生随机数

1:srand() 里的值必须是动态变化的,否则得到的随机数就是一个固定数

2:其实可以不用写srand() ,只用rand()就可以了,省事,简单,例子如下

如果我们想得到一个 0-60的随机数那么可以写成

int i;

i=rand()%60;

就可以了。

当然最好有个统一的标注如下:

int i;

srand((unsigned)time( NULL ));

i=rand()%60;

这样就OK了。利用时间再附加一些算法,可以达到效果

rand()的结果每次一样,不好用RANDOM()函数

在文件里

此函数产生的是0-1之间的随机数

C语言中获得随机数的方法

C语言/C++怎样产生随机数:这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。

(1) 如果你只要产生随机数而不需要设定范围的话,你只要用rand()就可以了:rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。

例如:#include

#include

void main()

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

printf("%d\n",rand());

}(2) 如果你要随机生成一个在一定范围的数,你可以在宏定义中定义一个random(int number)函数,然后在main()里面直接调用random()函数:例如:随机生成10个0~100的数:

#include

#include

#define random(x) (rand()%x)

void main()

for(int x=0;x<10;x++)

printf("%d\n",random(100));

} (3)但是上面两个例子所生成的随机数都只能是一次性的,如果你第二次运行的时候输出结果仍和第一次一样。这与srand()函数有关。srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed), 如果未设随机数种子, rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1 ,进而导致rand()所产生的随机数值都一样。srand()函数定义 : void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值来当做seed

如果你用time(0)的话,要加入头文件#include例如:

#include

#include

#include

#define random(x) (rand()%x)

void main()

{srand((int)time(0));

for(int x=0;x<10;x++)

printf("%d\n",random(100));

}这样两次运行的结果就会不一样了!!问题1: 怎样获得一个真正的随机数?要知道,rand()是不能产生真正的随机数的!即使不能产生真正的随机数,也要大概接近呀!而rand()好象每次的随机都一样。

专家解答:

之所以rand()每次的随机数都一样是因为rand()函数使用不正确。各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。如果计算伪随机序列的初始数值(称为种子)相同,则计算出来的伪随机序列就是完全相同的。这个特性被有的软件利用于加密和解密。加密时,可以用某个种子数生成一个伪随机序列并对数据进行处理;解密时,再利用种子数生成一个伪随机序列并对加密数据进行还原。这样,对于不知道种子数的人要想解密就需要多费些事了。当然,这种完全相同的序列对于你来说是非常糟糕的。要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。你可以在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。你也可以使用srand函数来人为指定种子数。Windows 9x/NT的游戏FreeCell就允许用户指定种子数,这样用户如果一次游戏没有成功,下次还可以以同样的发牌结果再玩一次。

问题2: 我按照上述方法并不能产生随机数,仅产生公差为3或4的等差数列:

#include

#include

#include

#include

void main()

{

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

{

srand( (unsigned)time( NULL ) );

cout<

}

}

专家解答:

你的程序是有问题的,你每产生一个随机数之前,都调用一次srand,而由于计算机运行很快,所以你每次用time得到的时间都是一样的(time的时间精度较低,只有55ms)。这样相当于使用同一个种子产生随机序列,所以产生的随机数总是相同的。你应该把srand放在循环外:

srand( (unsigned)time( NULL ) );

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

{

//相关语句

}可以使用库函数rand()。

rand声明于stdlib.h,其原型为

int rand(void);

功能为返回一个随机整型值。在C语言中,该值是一个正数值。

在需要限定获取到的随机数范围时,如范围要求为[m,n] m

rand()%(n-m+1)+m

的形式进行获取。原理为:

%为取余计算,当%k时,结果是[0,k-1]之间的数值;

于是rand()%(n-m+1) ∈ [0, n-m];

所以rand()%(n-m+1)+m ∈ [0+m, n-m+m]=[m,n]。在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字重复率很低,这样看起来好象是真正的随机数,实现这一功能的程序叫伪随机数发生器。

有关如何产生随机数的理论有许多,如果要详细地讨论,需要厚厚的一本书的篇幅。不管用什么方法实现随机数发生器,都必须给它提供一个名为“种子”的初始值。而且这个值最好是随机的,或者至少这个值是伪随机的。“种子”的值通常是用快速计数寄存器或移位寄存器来生成的。

下面讲一讲在c语言里所提供的随机数发生器的用法。现在的c编译器都提供了一个基于ansi标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:

1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;

2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)

3) 根据需要多次调用rand(),从而不间断地得到新的随机数;

4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

这个过程看起来很简单,问题是如果你每次调用srand()时都提供相同的种子值,那么,你将会得到相同的随机数序列,这时看到的现象是没有随机数,而每一次的数都是一样的了。例如,在以17为种子值调用srand()之后,在首次调用rand()时,得到随机数94。在第二次和第三次调用rand()时将分别得到26602和30017,这些数看上去是很随机的(尽管这只是一个很小的数据点集合),但是,在你再次以17为种子值调用srand()后,在对于rand()的前三次调用中,所得的返回值仍然是在对94,26602,30017,并且此后得到的返回值仍然是在对rand()的第一批调用中所得到的其余的返回值。因此只有再次给srand()提供一个随机的种子值,才能再次得到一个随机数。用随机数函数要区分编程环境。TC和VC(VC代表win32编译器)是不同的。TC下用以下两个函数初始化随机数产生器void randomize(void)产生随机数(max表示 产生从0~max-1的随机数)

int random(int max)例子:int main(){ int rand; randomize(); rand=random(10)+1; /*产生1~10的随机数*/}vc下也有两个函数 srand(unsigned long seed) 用于初始化随机数,参数为随机数种子,一般使用当前时间作为随机数种子。 unsigned long rand(void)返回一个随机数,范围可用取余运算控制。例子:#include int main(){ int a; srand(time(0));//time(0)以秒为单位。 a=rand()%10+1;//产生1~10的随机数}在VC中设计到随机数有两个函数

srand() and rand()

srand() 的作用是是一个种子,提供每次获得随机数的而已,rand()根据种子而产生随机数

1:srand() 里的值必须是动态变化的,否则得到的随机数就是一个固定数

2:其实可以不用写srand() ,只用rand()就可以了,省事,简单,例子如下

如果我们想得到一个 0-60的随机数那么可以写成

int i;

i=rand()%60;

就可以了。

当然最好有个统一的标注如下:

int i;

srand((unsigned)time( NULL ));

i=rand()%60;

这样就OK了。

c语言生成随机数(c语言生成随机数并排序)相关推荐

  1. C语言生成不重复的随机数数组

    C语言生成不重复的随机数数组 //一个随机数数组生成算法,生成0-n不重复的随机数数组 //本例子使用的是0-99的范围,参数可改 //如果是在最后面的数组,使用完,丢弃 //如果是前面的数则用后面不 ...

  2. python生成100个随机数_Python_0——100闭区间产生3个随机数,两种方法排序

    ''' 题目:0--100闭区间产生3个随机数,两种方法排序 法1:暴力遍历 法2:max(a,b,c)min(a,b,c) 注意:random,radint(0--100)产生随机数 '''impo ...

  3. 获取连续生成的100-200范围的随机数,直到生成的随机数与前一个随机数相等,停止运行

    编写程序,获取连续生成的100-200范围的随机数,直到生成的随机数与前一个随机数相等,停止运行 题目:编写程序,获取连续生成的100-200范围的随机数,直到生成的随机数与前一个随机数相等,停止运行 ...

  4. 在多个指定区间内生成随机数,且随机数总和固定算法

    在多个指定区间内生成随机数,且随机数总和固定算法 一.介绍 最近项目上遇到了一个需求就是在多个指定区间内生成总和恒定的随机数. 示例:在[1-3].[4-20].[24-100]区间上分别生成一个随机 ...

  5. c语言rand生成1 100随机数,c语言生成1~100随机数

    C语言如何srand和rand函数产生10个1-100内的随机数 10个是任意的,也可能是100个,1-100也是任意的...CSS布局HTML小编今天和大家分享解,详细的有追加 需要准备的材料分别有 ...

  6. c语言生成16进制随机数,C语言实战篇——模拟ATM取款机,最强大脑小游戏,进制转换,产生不同的随机数...

    2019.11.24 模拟ATM取款机 如图为登录界面 银行.png #include int main(){ printf("----------------------------\n& ...

  7. C语言随机生成1到50中7个数,c语言生成50个随机数,对随机数进行快速排序。

    楼下的几个回答我怎么看也不是快速排序,所以我做了一个用快速排序法排序的程序 #include #include #include #define LEN 50 //快速排序(升) void quick ...

  8. c语言 不用时间 怎么随机数,C语言生成随机数 把系统时间的ms值作为随机数或者随机数的种子...

    满意答案 C语言 毫秒级 Sleep(); 功 能: 执行挂起一段时间 原型:Sleep(unisgned long); clock(); 功能:开启这个程序进程"到"程序中调用c ...

  9. C语言生成开区间ab内随机数,javascript math.random()生产范围随机数开闭区间问题

    1. 开闭区间 这个首先我们得弄明白 Math.random() 的范围和开闭区间问题吧?文档是有说明的,它是 [0, 1) 区间的. 2. 区间的移动和缩放 平移使用加减,缩放乘以系数.所以: 第一 ...

最新文章

  1. HTTP项目1.0 -- HTTP协议基础知识
  2. CTFshow 命令执行 web50
  3. Dataset之LSUN:LSUN数据集的简介、安装、使用方法之详细攻略
  4. python 赋值、表达式
  5. java oracle 乐观锁,oracle为什么默认乐观锁
  6. #,#x,\u开头的unicode介绍
  7. 4-3逻辑非运算符及案例 4-4
  8. 设计模式——通过简单工厂模式推出工厂方法模式
  9. redis 公网ip访问_怎样从公网访问内网Redis数据库
  10. Qtum量子链入驻慢雾区,漏洞赏金计划单项最高奖励达1万美金!
  11. [路由器] k2p支持ipv6相关设置
  12. Panasonic: FP-X0 L30R 使用 FPWIN GR7 通讯及编程
  13. ZFAKA最新版最简安装教程
  14. java dns 解析域名解析_JavaWeb(3)DNS域名解析
  15. OrCAD之Design Resources的文件导入新的.dsn文件后,旧的。dsn文件如何去除?
  16. Win10有哪些方便快捷的操作小技巧?
  17. 使用Google学术自动生成标准的参考文献格式(Word版+LaTex版)
  18. 明明很努力的写博客,为啥没人看?试试这些方法和工具(建议收藏)
  19. linux arm 无法执行二进制文件,qemu-arm无法运行arm编译的二进制文件
  20. 解决服务器80端口占用问题

热门文章

  1. python分别统计男女人数_python实现爬虫统计学校BBS男女比例(一),python男女比例...
  2. 戴尔服务器r330系统安装,Dell 服务器 PowerEdge R330
  3. Verilog代码设计之时分复用
  4. CNN网络中的小工具——绘制热力图(Heat_Map)
  5. 微信小程序实战须知2:详解数据API所需网络配置域名、Https、备案、SSL
  6. IF函数超实用的12种经典用法
  7. OSGI框架:模块层、生命周期层、服务层
  8. C# 代码注册Dll文件
  9. 爬虫入门(五)抓取网页数据
  10. 云计算中的认证基础——AK