社区
新手乐园
帖子详情
rand()随机函数是什么原理呢?
wangyan8576
2005-12-11 12:28:22
rand()这个函数的算法是什么,小弟想知道。小弟刚刚进入编程的门,才学过一遍谭老头的C语言。
...全文
1110
14
打赏
收藏
rand()随机函数是什么原理呢?
rand()这个函数的算法是什么,小弟想知道。小弟刚刚进入编程的门,才学过一遍谭老头的C语言。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
C_1982
2005-12-13
打赏
举报
回复
mark
goolee
2005-12-12
打赏
举报
回复
通常随机数的产生基于线形同余法:
x=mod(j*x+k,m)
其中,
x称为种子,且x位于[0,m-1],当x取不同值是产生不同的随机数列。
m越大随机性越好。
dx30611
2005-12-11
打赏
举报
回复
rand()的初值与上一次rand()的调用有关,
如果是第一次调用,初值是一样的
dx30611
2005-12-11
打赏
举报
回复
rand()有一个最初值,称为种子,然后再根据这个值生成序列,如果种子一样,则随机数一样
srand()设置种子。至于这个种子在rand()中是怎么设置的我也不清楚,请高手解答
jiangkeredgirl
2005-12-11
打赏
举报
回复
随机数,是有几行比较复杂的代码产生的,我看到过
原理是,一个数学上的函数吧,由于出现的各个值,可以基本用概率来测试,所以叫随机数
wangyan8576
2005-12-11
打赏
举报
回复
小弟还不知道各位大虾们说的这些东西,不过我会好好努力钻研的,你们说的东西,我都还不是怎么懂,不过也学到了一些东西,谢啦
xiaocai0001
2005-12-11
打赏
举报
回复
系统里的随机数是利用初等数论中的同余定理来实现的.
比如VC中对于rand()函数是如下实现的.
int __cdecl rand (void)
{
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
}
widowss
2005-12-11
打赏
举报
回复
暈,樓上的都沒講到點子上啊,估計是沒搞過底層匯編。。。。
其實rand()函數的原理就是往中斷里面設置一個變量,當中斷來的時候這個變量就自加一次。溢出之后又從0開始自加。所以我們想取某個范圍的隨機數就必須要rand()%(范圍),為了保証它的隨即性才在里面放置種子。
結分吧!
================================================
按照你这么说就是说随即书都是相连的?事实不是,怎么解释呢?
richard_ma
2005-12-11
打赏
举报
回复
我只知道是用系统时间做种子,其他的我和你知道的差不多
学习ing
xiaocai0001
2005-12-11
打赏
举报
回复
机器内部有一个很长的伪随机数序列,以乱序列出了0~0x7fff的N个连续排列
srand()指定了从这个序列的第几个开始,然后每执行一次rand()就去这个序列的下一个数
-----------------------
这是什么理论哎?
还没听过,说rand()函数的随机数是这样产生的!!
fiftymetre
2005-12-11
打赏
举报
回复
也不是楼上说的原因
机器内部有一个很长的伪随机数序列,以乱序列出了0~0x7fff的N个连续排列
srand()指定了从这个序列的第几个开始,然后每执行一次rand()就去这个序列的下一个数
所以,机器不可能产生真正的随机数的,产生的都是伪随机数
chengzanmiao
2005-12-11
打赏
举报
回复
暈,樓上的都沒講到點子上啊,估計是沒搞過底層匯編。。。。
其實rand()函數的原理就是往中斷里面設置一個變量,當中斷來的時候這個變量就自加一次。溢出之后又從0開始自加。所以我們想取某個范圍的隨機數就必須要rand()%(范圍),為了保証它的隨即性才在里面放置種子。
結分吧!
wangyan8576
2005-12-11
打赏
举报
回复
是不是先给定一个初始值,然后编一个方程产生随机的数?就像是数列一样,如果是?那位有这个rand()的原代码,贴个看看
oyljerry
2005-12-11
打赏
举报
回复
根据一个种子开产生序列
rand
函数
的实现
原理
rand
函数
的实现
原理
rand
函数
产生的是伪
随机
数,也就是说它不是一个真实的
随机
数。那么伪
随机
数是怎么实现的呢?
原理
大概如下:如果约定:a1=f(seed),an+1=f(an)a_1 = f(seed), a_{n+1} = f(a_n)那你可以行到一个序列:a1,a2,a3...ana_1, a_2, a_3 ... a_n,那么要制作一个伪
随机
函数
rand
,只需要让它每调用一次就返回序列的下
C语言之
随机
数
函数
(
rand
() )的使用方法
文章出自个人博客https://knightyun.github.io/2018/04/25/c-
rand
-number,转载请申明。 在程序设计中,难免会使用到
随机
值
函数
,其
原理
与语法大多类似,接下来以C语言为例介绍其
随机
值
函数
rand
() 用法。
原理
引用百度百科,首先,需要包含头文件: #include <stdlib.h>
rand
()
函数
是按指定的顺序...
C语言
随机
函数
:
rand
()和s
rand
()的使用及示例
一、
rand
()
函数
1、
rand
()
函数
原理
rand
()
函数
用于产生一个
随机
数,其内部实现是用线性同余法实现的,是伪
随机
数,由于周期较长,因此在一定范围内可以看成是
随机
的。调用
rand
()
函数
会得到一个在0-
RAND
_MAX。
RAND
_MAX在头文件stdlib.h中定义。 2、调用方法 想要使用
rand
()
函数
产生一个(a,b)区间的数num,可以使用以下两种方式: (1)num=a+(b-a+1)*
rand
()/(
RAND
-MAX+1.0); (2)a+
rand
%(b-a+1); 注意公式(1)用的
c语言
随机
函数
rand
的
原理
,[转载]C语言:
随机
函数
rand
()、s
rand
()、
rand
om()和
rand
o
声明一点:在VC++中,没有
rand
om()和
rand
omize()
函数
,只有
rand
()和s
rand
()
函数
。其中,
rand
om()和
rand
omize()
函数
的使用的方法分别与
rand
()和s
rand
()
函数
的使用方法对应类似。下面就开始讲
rand
()和s
rand
()
函数
的使用:首先,让我们从宏观的角度,来理解它们的使用机理:1、这两个
函数
都在头文件是stdlib.h中2、
rand
()
函数
和s...
【
rand
】C++
随机
函数
关于
随机
函数
有意思的是,计算机的
随机
并不是我们传统意义上理解的
随机
。因为计算机又没有自己喜欢的数字,它不会随口一说,它只是运算一个
随机
函数
,所谓
函数
,当自变量不变,计算结果一定不变,这是
函数
的基本性质之一。那么如何让计算机产生真正的
随机
数呢?
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章