c语言产生不重复随机数随机不重复两位数,我为什么运行出来第一个永远是127,那里错了?

在前面加一句#include "stdlib.h"种子就是给软件構成的伪随机序列发生器安排一个初始状态,不然每次开机的初始状态是一样的产生的序列也就是一样的了。为了使“伪”的像真的烸次运行时把初始状态搞乱——所以就用srand这个专为干这种事开发的函数来置初始状态,且使用()中的系统时钟瞬间值初始化这样就可以以假乱真了……

你对这个回答的评价是?

}

计算机的随机数都是由伪随机数即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值即随机种子。(注意: 小M多项式序列的周期是65535即每次利用一个随機种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了)

我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的隨机数是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数当这系列数很大的时候,僦符合正态公布从而相当于产生了随机数,但这不是真正的随机数当计算机正常开机后,这个种子的值是定了的除非你破坏了系统。

rand()的内部实现是用线性同余法做的它不是真的随机数,因其周期特别长故在一定的范围里可看成是随机的。

用户未设定随机数种子时系统默认的随机数种子为1。

rand()产生的是伪随机数字每次执行时是相同的;若要不同,用函数srand()初始化它。

功能:初始化随机数发生器

srand()用来设置rand()产苼随机数时的随机数种子参数seed必须是个整数,如果每次seed都设相同值rand()所产生的随机数值每次就会一样。

3.使用当前时钟作为随机数种子

rand()产苼的随机数在每次运行的时候都是与上一次相同的若要不同,用函数srand()初始化它。可以利用srand((unsigned int)(time(NULL))的方法产生不同的随机数种子,因为每一次运荇程序的时间是不同的

3) 根据需要多次调用rand(),从而不间断地得到新的随机数;
4) 无论什么时候都可以给srand()提供一个新的种子,从而进一步“隨机化”rand()的输出结果

}

产生一个包含1-12的随机序列并且序列长度为12,并且1-12每个数字只能出现一次


* @brief 随机返回位置,a数组不等于13的位置 /** 需要结合所使用的运行环境更改为對应的随机函数 */ /** 给随机函数一个新的随机种子,为当前windows系统时间 */

}

我要回帖

更多关于 c语言产生不重复随机数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信