如何使用C语言随机生成方阵A,C语言中随机数相关问题

用C语言产生随机数重要用到rand函数、srand函数、及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明。

int rand(void);//生成一个随机数

voidsrand(unsigned int seed); //为rand设置“种子”的值

srand()就是给rand()提供种子seed,如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的。通常的做法是以这样一句代码:

srand((unsigned)time(NULL));

来取代,这样将使得种子为一个不固定的数,这样产生的随机数就不会每次执行都一样了。先看一个例子:

#include

#include

#include

int test_rand()

{

int i;

/* Seed therandom-number generator with current time so that

* thenumbers will be different every time we run.

*/

srand((unsigned)time( NULL ) );

/* Display10 numbers. */

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

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

return 0;

}

C的函数库之所以没有把使用系统时钟初始化随机种子这步重要的操作直接放进rand函数的实现中,可能有如下原因:

1.可以高效产生连续的随机数,不用每次都初始化;

2.给程序员以更高的灵活性,因为可能在要求较高的场合,应该使用更好的的数据做种子,而不是系统时钟;

3.对于只是想产生大量伪随机数来尽兴某种验证或者统计,未必需要初始化,大不了程序每次运行都产生同样的一系列随机数而已——有些情况下,这是无所谓的。

4.作为伪随机序列产生器的rand()函数,必须具备的一个重要特性就是:产生的序列必须是可重现的。这不仅仅是一个算法,相当大的程度上,它关系到代码测试的准确性。如果算法中使用了和rand()的结果相关的数据,通过一个可控的可重现序列,我们就有机会再现每一次测试的过程,从而更有效的找到问题的所在。所以这里提出一个建议,代码中,如果rand()的函数结果关系到算法的结果,那么,必须保证你的rand()调用是可重现的。

另外使用rand还用几个问题:

如何生成 0到

100之间的随机数?

用"int x = rand() % 100;"这种方法是不或取的,会使产生的随机数不在随机。产生一个0到n之间的随机数的比较好的做法是:

j=(int)(n*rand()/(RAND_MAX+1.0));

如何产生一个范围在(a,b)之间的随机数?

先计算a与b的差值,设c=b-a;产生一个介于0和b-a的数值,设

d=(int)((b-a)*rand())/(RAND_MAX+1.0)

让上面产生的值d加上a就可以了。

如果你使用C++11编程,请使用C++11自己的随机数生成方法!

虽然前面介绍了那么多,但是我还是想说C语言的随机数生成方法有很多缺陷,很容易被引入非随机性,而且功能单一,如果可以的话去,你最好避免使用它。

c语言中数组相关问题

c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...

c语言中条件编译相关的预编译指令

一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二.条件编 ...

【编程开发】C语言中随机数rand使用注意事项

[编程开发]C语言中随机数rand使用注意事项 标签: [编程开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:随机数在编程开发中非常重要,以C语 ...

C语言中随机数的生成

刚好在找这方面的资料,看到了一片不错的,就全文转过来了,省的我以后再找找不到. 在C语言中,可以通过rand函数得到一个“伪随机数”.这个数是一个整数,其值大于等于0且小于等于RAND_MAX.ran ...

c语言中文件相关操作

一 .首先介绍一下数据文件的类型: 1.二进制文件(映像文件):在内存中以二进制形式存取. 2.文本文件(ascii文件):以ascii码形式存取的文件. 通俗的讲,在Mac下,你把一个文件丢进记事本 ...

Zend&lowbar;Frameowrk中进行多语言国际化的相关的配置和使用

在使用Zend_Framework建立网站,若网站在以后的使用中面向国际,这时就需要实现网站的多语言国际化问题.使用Zend_Framework开发的网站需要进行多语言的开发时,就需要用到了Zend_ ...

C语言中如何产生随机数

今天看到一段小程序 ,里面用到随机数.才发现在C语言中产生随机数不像matlab中那么简单. C中也有rand()函数,但是rand()函数产生的数不是真正意义上的随机数,是一个伪随机数,是根据一个数 ...

c语言中实现从0-1的随机数输出

原文:c语言中实现从0-1的随机数输出 今天晚上同学问了一个巨简单的问题,问我怎么用c语言输出0-1的随机数,可别说,一时之间还想不出来.在写的过程中发现,直接调用random函数还不能实现,用以下方 ...

C语言中如何写一个简单可移植而又足够随机的随机数生成器

在C语言中标准库中的随机数产生函数的返回可能不是最优的,因为有些随机数生成器的低位并不随机,而另一些返回随机数的函数实现上又太复杂鸟.所以rand()%N并不是一个好方法,牛人给出的建议是使用: ra ...

随机推荐

as3的操作符重载

Array.prototype.valueOf = function ():Number{       var sum:Number = 0;       for each (var v:* in t ...

vijos P1448 校门外的树

描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的--如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:\(K=1\),读入\(l, ...

linux下安装及配置和启动memcached

一.下载文件: 下载memcached和libevent,放到/hom/zwl/目录下 # wget http://www.danga.com/memcached/dist/memcached-1.2 ...

Android动画 fillAfter和fillBefore

fillBefore是指动画结束时画面停留在此动画的第一帧; fillAfter是指动画结束是画面停留在此动画的最后一帧. java代码设置如下: /*****动画结束时,停留在最后一帧******* ...

Android imageView图片按比例缩放

android:scaleType可控制图片的缩放方式,示例代码如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值