免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9638 | 回复: 11
打印 上一主题 下一主题

设置RANDOM 种子是怎么回事 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-11 09:43 |只看该作者 |倒序浏览
$RANDOM是一个产生随机数的函数

RANDOM=$$   #使用脚本的进程ID 来作为随机数的产生种子

RANDOM=1 # 为随机数的产生设置RANDOM 种子

上面例子中RANDOM 种子是什么呀,不明白

论坛徽章:
0
2 [报告]
发表于 2008-07-12 11:42 |只看该作者
怎么没人回答呀

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2008-07-12 11:55 |只看该作者
真正的随机事件(在它存在的范围内),只发生在特定的几个未知的自然界现象中,比如放射性衰变.计算机只能产生模拟的随机事件,并且计算机产生的"随机"数因此只能称为伪随机数.

计算机产生的伪随机数序列用的种子可以被看成是一种标识标签.比如,使用种子1所产生的伪随机数序列就被称作序列#1.

一个伪随机序列的特点就是在这个序列开始重复之前的所有元素的个数的和,也就是这个序列的长度.一个好的伪随机产生算法将可以产生一个非常长的不重复的序列.

论坛徽章:
0
4 [报告]
发表于 2008-07-12 12:30 |只看该作者
补充一下:生成随机数会有一种算法,算法一般是固定的,但生成的随机数序列可以根据种子值的不同而发生变化
-bash-2.05b# RANDOM=1;echo $RANDOM
16838
-bash-2.05b# RANDOM=2;echo $RANDOM
908
-bash-2.05b# RANDOM=3;echo $RANDOM
17747

我发现上面的命令无论执行多少此,返回来的值都是一样的。说明种子值决定了随机数序列,当种子值约定之后,那么随机数序列也随之改变,在相同的当前环境下,产生的随机数序列也会是一样的。所以执行RANDOM=1;echo $RANDOM总是会返回16838。

不对请指出。

论坛徽章:
0
5 [报告]
发表于 2008-07-12 13:02 |只看该作者
原帖由 ly5066113 于 2008-7-12 11:55 发表
真正的随机事件(在它存在的范围内),只发生在特定的几个未知的自然界现象中,比如放射性衰变.计算机只能产生模拟的随机事件,并且计算机产生的"随机"数因此只能称为伪随机数.

计算机产生的伪随机数序列用的种子 ...

pgp使用输入的间隔时间处理后作为随机数,我想这个是真随机吧,不过不是计算机得出的,还有计算机拦截网络信号,或者是硬件IRQ的话我想也可以算真随机的。

论坛徽章:
0
6 [报告]
发表于 2008-07-12 17:45 |只看该作者
可以这样说吗?

生成随机数的算法如果是固定的,那么产生的随机数序列也就是固定的序列。序列中前一个随机数决定后一个随机数,也就是说前一个随机数$RANDOM就是后一个随机数的种子

随机数的种子不能决定随机数产生的序列,只是决定从该序列的哪个位置开始输出随机数。

还有随机数的种子应该不能不能超过某一个值吧?这个值应该由生成随机数的算法决定的吧。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2008-07-12 18:19 |只看该作者
楼主学过《Linux下的C编程》不?看看头文件的定义吧。

论坛徽章:
0
8 [报告]
发表于 2008-07-13 00:48 |只看该作者
我倒是很想知道在什么样的情况下需要设置RANDOM 种子?举个例子。

论坛徽章:
0
9 [报告]
发表于 2008-07-13 02:42 |只看该作者
原帖由 eeeef 于 2008-7-13 00:48 发表
我倒是很想知道在什么样的情况下需要设置RANDOM 种子?举个例子。

什么情况下都需要,没有种子就没有随机数,只是大部分情况下有默认值,比如执行时候的微秒数,或者是从IRQ里面读取数字,毕竟IRQ比时间更安全。

论坛徽章:
0
10 [报告]
发表于 2008-07-13 09:25 |只看该作者
原帖由 爱知 于 2008-7-12 17:45 发表
可以这样说吗?

生成随机数的算法如果是固定的,那么产生的随机数序列也就是固定的序列。序列中前一个随机数决定后一个随机数,也就是说前一个随机数$RANDOM就是后一个随机数的种子

随机数的种子不能决定 ...

这对吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP