免费注册 查看新帖 |

Chinaunix

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

问个有关RANDOM变量的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-12 11:00 |只看该作者 |倒序浏览
bash里可以用$[($RANDOM%1000)]得到1000一下的随机数
ksh里可以用$((RANDOM%8888+1111))获得1111到9999之间的随机数

为什么可以这样用?这是啥语法?

论坛徽章:
0
2 [报告]
发表于 2009-11-12 11:01 |只看该作者
变量替换

论坛徽章:
0
3 [报告]
发表于 2009-11-12 11:02 |只看该作者
$[($RANDOM%1000)] 不是绝对得把 去掉中括号也可以吧
想知道 去查书 这个是赋值运算

论坛徽章:
0
4 [报告]
发表于 2009-11-12 11:04 |只看该作者
原帖由 china-yuan 于 2009-11-12 11:02 发表
$[($RANDOM%1000)] 不是绝对得把 去掉中括号也可以吧
想知道 去查书 这个是赋值运算


你不懂就不要说,别总拿“去查书”说事,搞笑

论坛徽章:
0
5 [报告]
发表于 2009-11-12 11:07 |只看该作者
  我没说我对..讨论嘛..至于么...查书只是个代名词,难道不应该养成自学的习惯么

论坛徽章:
0
6 [报告]
发表于 2009-11-12 11:07 |只看该作者
原帖由 xn_sung 于 2009-11-12 11:00 发表
bash里可以用$[($RANDOM%1000)]得到1000一下的随机数
ksh里可以用$((RANDOM%8888+1111))获得1111到9999之间的随机数

为什么可以这样用?这是啥语法?


$((RANDOM%8888+1111)),RANDOM%8888,当然小于8888,再加上1111,当然就小于9999了,这个在ksh和bash下都可以用

$[($RANDOM%1000)],还是不懂

论坛徽章:
0
7 [报告]
发表于 2009-11-12 11:08 |只看该作者
原帖由 china-yuan 于 2009-11-12 11:07 发表
  我没说我对..讨论嘛..至于么...查书只是个代名词,难道不应该养成自学的习惯么


大哥,我没查到才来问的啊,你也知道,这玩意都是标点符号,搜索引擎搜不到~

论坛徽章:
0
8 [报告]
发表于 2009-11-12 11:16 |只看该作者

回复 #6 xn_sung 的帖子

$[($RANDOM%1000)],还是不懂


     RANDOM Each time this parameter is referenced, a random integer between 0 and 32767 is generated.  The sequence of random numbers may  be  initial-
              ized by assigning a value to RANDOM.  If RANDOM is unset, it loses its special properties, even if it is subsequently reset.



这个随机数只在0-32767 之间,所以 RANDOM%1000不会大于1000



[2]echo $[ RANDOM ]
17598
[2]echo $[ RANDOM ]
15081
[2]echo $[ RANDOM ]
7025
[2]echo $[ RANDOM ]
11673
[2]echo $[ RANDOM ]
14341
[2]echo $[ RANDOM ]
28362
[2]echo $[ RANDOM ]
9957
[2]echo $[ RANDOM%1000 ]
97
[2]echo $[ 28362%1000 ]
362
[2]echo $[ 14341%1000 ]
341

论坛徽章:
0
9 [报告]
发表于 2009-11-12 11:18 |只看该作者

回复 #8 wtuter 的帖子

我晕,除以1000的余数当然不会大于1000,这还用证明啊?

不过我忽略了$[]里也可以做算数运算,呵呵,$[($RANDOM%1000)]里,小括号是可以不要的,现在我明白了

[ 本帖最后由 xn_sung 于 2009-11-12 11:23 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-11-12 11:22 |只看该作者

回复 #9 xn_sung 的帖子

呵呵,心态没摆好啊?


你的什么系统[($RANDOM%1000)],这个能跑吗?

学习也是一种态度,既然问就得问的谦虚点



[2]echo $PWD
/root
[2]echo $RANDOM
31974
[2]
[2]echo $RANDOM
10948

RANDOM:只是SH的一个内部变量,跟PWD一样的,它能随机得到integer between 0 and 32767

[ 本帖最后由 wtuter 于 2009-11-12 11:26 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP